-5

您如何将以下递归转换为 C 中的迭代?

例子:

int sum(int n) {
    return n < 2 ? n : sum(n-1) + sum(n-2);
} 
4

1 回答 1

2

直接应用斐波那契数列的定义:

注册

初始化

要获得 1:1 翻译:

int f(int N) {
    int fn = N; // Edit: init fn with N
    int fn_1 = 1;
    int fn_2 = 0;
    while (N >= 2) {
        fn = fn_1 + fn_2;
        fn_2 = fn_1;
        fn_1 = fn;
        N--;
    }
    return fn;
}
于 2013-06-16T18:55:57.930 回答