C語言問題~算階乘會因數字過大而爆掉

2010-11-20 8:35 pm
#include <stdio.h>
#include <stdlib.h>
double stair(int n){
if(n==1)
return 1;
else if(n==2)
return 2;
else
return (stair(n-1)*n);
}
int main(){
int n;
printf("計算n!(念:n階)的值\n");
printf("Enter n(n<13): ");
scanf("%d",&n);
printf("%d!=%d\n",n,stair(n));
system("pause");
return 0;
}


當我輸入 n= 13 時 ,算出來的結果會是負的,請問一下我該如何修改
更新1:

用get and put 的方法?? 要怎麼用? 可以示範一下嗎?

回答 (3)

2010-11-21 7:27 am
✔ 最佳答案
int只有2bit=16byts=正負2的16次方

最大表示到-65534~65535

其實可以用Get and Put方法

不然可以用double float long double...
2010-11-21 7:09 am
定義double變數
2010-11-20 8:59 pm
Change your printf statement to use %f instead of %d for stair(n).


收錄日期: 2021-04-30 12:54:39
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20101120000016KK03239

檢視 Wayback Machine 備份