輸出[m,n]范圍內的所有斐波那契(Fibonacci)數,m,n這兩個數由鍵盤輸入。
【提示】
1,1,2,3,5,8,13,21,34,……這是斐波那契(Fibonacci)數列的前幾項。斐波那契數列的特點:前兩項均為1,後面任意一項都是其前面兩項之和。
本實驗雖然只要求輸出在[m,n]范圍內的斐波那契數,但是依然需要從第1個Fibonacci數開始依次得到下一個,並判斷是否是需要輸出的那個。
#include
int main()
{
int f[100];
int m, n, i;
f[0] = 1; f[1] = 1;
for (i = 2; i < 100; i++)
{
f[i] = f[i - 1] + f[i - 2];
}
scanf("%d%d", &m, &n);
for (i = 0; f[i] < m; i++);
for (; f[i]<n; i++)
printf("%d ",f[i]);
return 0;
}
兩個疑問
第一個疑問: 你看這個程序 ,我輸入 1 3 ,也就是m是1,n是3,運行第二個for時,f[0]<m 不成立 那麼程序會怎麼樣走呢,整個程序也就一個printf 但也要第三個for成立時候才能執行,那要是之前不成立呢,程序怎麼運行?
第二個疑問
我輸入 1 3 輸出 1 1 2,怎麼改能讓他輸出 1 1 2 3或者 1 2 3 呢?
第一個問題,在for循環裡,首先給i賦值為0,然後判斷f[0]和m的大小關系,發現f[0]<m 不成立,於是跳出for循環,順序執行後面的代碼
第二個問題,最後一個for循環改成這樣:
for (; f[i]<=n; i++)
printf("%d ",f[i]);