[英]Creating a Fibonacci sequence in C
考慮一個斐波那契數列,其值不超過四百萬。 求偶值項的總和。 您的答案必須是 4613732。
#include <stdio.h>
int main()
{
int a =0,b=1,c=0,sum=0;
while (c<=10){
int c=a+b;
a=b;
b=c;
if(c%2==0){
sum=sum+c;
}
}
printf("%d",sum);
return 0;
}
output 結果是空白的。 我試了 10 來計算時間更短,答案應該是 2+8=10。 我不知道該怎么辦。
int c=a+b;
這不會修改在循環外聲明的變量c
; 它創建了一個新變量,其 scope 只是循環體。 你只想要c=a+b;
這里。
您還有另一個錯誤,即在循環迭代c
超出其限制值,該值仍可能被添加到總和中,即使它不應該被添加。 例如,如果您將循環測試替換為while (c <= 7)
,您仍然會得到 10 作為答案,而不是正確的 2。考慮如何重組循環體來解決這個問題。
主要問題在這里:
int c = a + b;
您已經重新定義了變量c
,它在每次迭代中都隱藏了原始變量。 從那里刪除int
聲明。
另外請注意,您要迭代多達400 萬次以獲得所需的結果。 因此,將迭代限制從10
更改為4000000
。*
* 建議在程序頂部聲明一個宏常量以避免出現幻數
int a = b+c
是您代碼中的主要問題。 那行代碼重新定義了整個變量聲明。 所以你想把 c = a+b
#include <stdio.h>
int main()
{
int a =0,b=1,c=0,sum=0;
while (c<=4000000){
c=a+b; // just remove the `int` and this should fix it
a=b;
b=c;
if(c%2==0){
sum=sum+c;
}
}
printf("%d",sum);
return 0;
}
輸出: 4613732
在這個問題中
int c=a+b;
您沒有使用在方法外部聲明的值 Insted 您正在定義一個僅適用於方法內部的新變量。 嘗試刪除while
循環內的int
decleration 它應該可以工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.