簡體   English   中英

for 循環在斐波那契數列中的工作原理

[英]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 ..

讓我們從一個更簡單的值開始。 假設fibo3調用。 它不是12 ,因此f1f2f被初始化(雖然命名約定不好)。 i3開始,並且3 <= 3 ,因此f被初始化為f1 + f2 ,即2 ( 1 + 1 )。 這是斐波那契數列的第三個數字。 n4 該過程是相同的,但是不是由於i變為44 <= 3false )而停止,而是使用i = 4運行代碼,因為4 <= 4 f (即2 )再次分配給f1 + f2 f1被分配給f2 ( 1 ) 的前一個值, f2被分配給f ( 2 )。 f1 + f2 == 1 + 2 == 3 ,所以f變成3 ,這確實是第四個斐波那契數。

對於更高的值,此過程以相同的方式繼續。

所以前兩個斐波那契數總是01
之后所有后面的數字都是前兩個數字的總和。
據此,下一步是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM