【发布时间】:2015-12-15 11:27:57
【问题描述】:
我很难理解递减斐波那契数的递归,试图手动评估它但没有成功。
在评估代码时,我认为它会从以下内容开始: (5, 1, 2)
但是,它开始于: (1, 8, 13) (2, 5, 8) 等等
我在这里完全迷失了。有人能解释一下为什么会这样吗?
#include <stdio.h>
#include <stdlib.h>
void fib_dec_a ( int n, int f1, int f2 ) {
if ( n > 1 ){
fib_dec_a ( n - 1, f2, f1 + f2 );
}
printf ("%d\n", f1);
}
int main () {
int n;
printf ( "Enter the length of descending Fibonacci sequence: " );
scanf ( "%d", &n);
printf ( "\nDescending sequence starting with an n-th element %d :\n", n );
fib_dec_a (n, 1, 1 );
return 0;
}
对于 n=6: 8 5 3 2 1 1
【问题讨论】:
-
您对此代码有什么具体问题吗?
-
是的,我不明白上述示例中的递归是如何工作的。我以为它会以 (5, 1, 2) 开头,但事实并非如此,而且似乎以 (1, 8, 13) 开头。
-
请更新您的问题以更详细地反映这一点,否则它将以“不清楚您在问什么”之类的内容结束