您如何将以下递归转换为 C 中的迭代?
例子:
int sum(int n) {
return n < 2 ? n : sum(n-1) + sum(n-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;
}