gpt4 book ai didi

c - 递归函数降序输出

转载 作者:行者123 更新时间:2023-11-30 14:48:07 25 4
gpt4 key购买 nike

void prikaz(int k, int n)
{
printf("%d\t",k);

if(k<n)
prikaz(k+1,n);

printf("%d\t",k);
}
prikaz(2,6);

我无法理解这个递归循环的输出,我可以一直跟踪直到数字开始下降,但我不明白它们为什么下降。

最佳答案

原因是因为函数的最后一行,打印了k的值递归调用返回/完成后。这将打印 +1 之前的值。 ,即调用前的原始值。

但是,它仅在所有递归调用完成后才执行该部分。

基本上,当 k<n不再成立,那么就会开始做最后的printf调用,然后返回到上一个函数调用并执行最后的 printf (这将是 k 递增之前的值)并且它将重复直到所有先前的调用完成。

这很难解释,你只需要更仔细地逐步了解即可。使用调试器会有很大帮助。

也许这有助于更好地解释它:

// call 1 (k = 2)
// call 1 print 2
// call 2 (k = 3)
// call 2 print 3
// call 3 (k = 4)
// call 3 print 4
// call 4 (k = 5)
// call 4 print 5
// call 5 (k = 6)
// call 5 print 6
// k<n is false, so no more recursive calls.
// call 5 print 6
// call 4 print 5
// call 3 print 4
// call 2 print 3
// call 1 print 2

关于c - 递归函数降序输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50697406/

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