當試圖解決Kochan的練習 - 在C書中編程(ex 4循環章節)時,問題是編寫前10個階乘數字。我試圖用嵌套循環來解決它,但結果是一個完全垃圾。 我擡起頭,發現一個與我的非常相似的解決方案,但我注意到變量的位置不同。爲什麼變量賦值的地方如此重要? [C]
上一頁溶液:
/*This program calculates the first 10 factorials*/
#include <stdio.h>
int main(void){
int n,i;
unsigned long int fact=1;
printf(" n\t\t n!\n");
printf("---\t\t--------\n");
for(n=1; n<=10; n++){
for(i = 1; i<=n; i++){
fact*=i;
}
printf("%2d\t\t%7ld\n",n,fact);
}
return 0;
}
輸出:
./factorial
n n!
--- --------
1 1
2 2
3 12
4 288
5 34560
6 24883200
7 857276416
8 -511705088
9 1073741824
10 0
固定溶液:
輸出:
./factorial
n n!
--- --------
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
請注意,唯一的區別是變量事實在第二個解決方案中是局部的,而在前一個解決方案中是全局的。
所以我想這個問題現在是澄清的,爲什麼改變這個地方似乎解決了這個問題?爲什麼將這個變量放在首位呢? 在此先感謝!
因爲在「固定」示例中,它在外循環的for循環的每次迭代中被重新初始化爲1,而在你的循環中它不是並且它保持以前的值 – UnholySheep
你可以很好地回答那個在你自己的。 'fact = 1;'如何以及在哪裏?需要初始化? –
@UnholySheep我沒有注意到這一點。謝了哥們 –