gpt4 book ai didi

c - 需要递归函数的解决方案

转载 作者:行者123 更新时间:2023-12-04 11:56:28 25 4
gpt4 key购买 nike

#include <stdio.h>

void call(int n )
{
if ( n > 0 )
{
call(--n) ;
printf("\n%d",n) ;
call(--n) ;
}
}

int main(void )
{
int a = 3 ;
call(a) ;
return 0 ;
}

在上面提到的代码中,我很难理解它背后的逻辑。我得到 0 1 2 0 作为输出。为什么?

最佳答案

call(3)
│ n3=3
│ --n3 (n3=2)
├╴call(2)
│ │ n2=2
│ │ --n2 (n2=1)
│ ├╴call(1)
│ │ │ n1=1
│ │ │ --n1 (n1=0)
│ │ ├╴call(0)
│ │ │ └ return
│ │ │
│ │ │ printf("\n0"); ⇦ 0
│ │ │
│ │ │ --n1 (n1=-1)
│ │ ├╴call(-1)
│ │ │ └ return
│ │ └ return
│ │
│ │ printf("\n1") ⇦ 1
│ │
│ │ --n2 (n2=0)
│ ├╴call(0)
│ │ └ return
│ └ return

│ printf("\n2"); ⇦ 2

│ --n3 (n3=1)
├╴call(1)
│ │ n1=1
│ │ --n1 (n2=0)
│ ├╴call(0)
│ │ └ return
│ │
│ │ printf("\n0"); ⇦ 0
│ │
│ │ --n1 (n1=-1)
│ ├╴call(-1)
│ │ └ return
│ └ return
└ return

关于c - 需要递归函数的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13890480/

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