gpt4 book ai didi

c - 递减斐波那契数列的递归

转载 作者:行者123 更新时间:2023-11-30 19:40:54 24 4
gpt4 key购买 nike

我很难理解斐波那契数列递减的递归,尝试手动评估它,但没有成功。

在评估代码时,我认为它会从以下内容开始:(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:853211

最佳答案

fib_dec_a 是阻塞调用;仅当该函数完成其必须执行的所有指令后,才会继续执行。因此,为了达到 n == 1 情况,必须先完成 n == 2 情况。这同样适用于 n == 3 的情况; n == 4 情况必须首先完成执行。

因此,所有 n 值较低的 printf 语句将首先执行,因为它们的被调用者 (n + 1 >) 在执行之前等待它返回。如果将 printf 语句移到 if (n > 1) 分支上方,您会发现顺序颠倒了。

关于c - 递减斐波那契数列的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34288045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com