[英]How a for loop works in Fibonacci Sequence
我有一個計算斐波那契數列的代碼,如下所示..我不明白 for 循環在這個例子中是如何工作的:
public class program {
private static int fibo (int n){
if (n==1 || n==2) return 1;
int f = 0;
int f1 = 1;
int f2 = 1;
for (int i = 3; i <= n;i++) {
f = f1 + f2;
f1 = f2;
f2 = f;
}
return f;
}
public static void main(String[] args) {
int n=7;
System.out.println(fibo(n));
}
}
代碼的輸出是13
..
讓我們從一個更簡單的值開始。 假設fibo
用3
調用。 它不是1
或2
,因此f1
、 f2
和f
被初始化(雖然命名約定不好)。 i
從3
開始,並且3 <= 3
,因此f
被初始化為f1 + f2
,即2
( 1 + 1
)。 這是斐波那契數列的第三個數字。 說n
是4
。 該過程是相同的,但是不是由於i
變為4
( 4 <= 3
為false
)而停止,而是使用i = 4
運行代碼,因為4 <= 4
。 f
(即2
)再次分配給f1 + f2
。 f1
被分配給f2
( 1
) 的前一個值, f2
被分配給f
( 2
)。 f1 + f2 == 1 + 2 == 3
,所以f
變成3
,這確實是第四個斐波那契數。
對於更高的值,此過程以相同的方式繼續。
所以前兩個斐波那契數總是0
和1
。
之后所有后面的數字都是前兩個數字的總和。
據此,下一步是0 + 1 = 1
,這與您在此處的代碼相同:
int f = 0; //fibonacci #1
int f1 = 1; //fibonacci #2
int f2 = 1; //fibonacci #3
之后,它將以相同的方式遍歷所有數字:
for (int i = 3;i <= n;i++) {
//calculate the new fibanacci, will get the fibonacci #1 variable
f = f1 + f2;
//the next fibonacci #2 will be the same as fibonacci #3 was before
f1 = f2;
//set the new fibonacci to fibonacci #3
f2 = f;
}
當它完成循環時,它只返回斐波那契數:
return f;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.