gpt4 book ai didi

C递归问题

转载 作者:太空狗 更新时间:2023-10-29 15:13:49 25 4
gpt4 key购买 nike

我有一个关于递归函数的查询。这是我的程序。

#include <stdio.h>

int fun(int);

int main(void)
{
int x;
int k=3;
x = fun(k);
printf("%d\n",x);
return 0;
}

int fun(int a)
{
int f;
if(a == 1) return (1);
f = 2 + fun(a-1);
return (f);
}

我在 STEP-6 中有一个值 K=3。在 STEP-7 中,函数 fun(k) 将 K 的值传递给 STEP-11 中被调用的函数 int fun(诠释一)。在被调用的函数 fun(int a) 中发生了 2 次递归,即 (3,2) 使得 a=1 的值。在后面的 STEP-14 中,f 的值变为 3,因为 f = 2 + (fun(1)=1)。在 STEP-16 中,它返回到被调用的函数,即 fun(int a)=3。应该打印 x 的值是 3,但不太可能不是。它是x =5

最佳答案

让我们检查一下 fun() 的调用顺序,好吗?

参数值为3,从main()开始

  • x = fun(3)
    • f = 2 + fun(2);
      • f = 2 + fun(1);

现在,让我们以相反的顺序检查返回值。

  1. 最后一次调用,fun(1)返回1
  2. 所以第二个调用 fun(2) 返回 2 + 13,
  3. 最后一次调用,fun(3) 返回2 + 35

这是从 main() 发出的调用。因此,在 main() 中,x 的值是 5

关于C递归问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31916305/

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