gpt4 book ai didi

C 递归中使用if或while的区别

转载 作者:行者123 更新时间:2023-11-30 18:24:58 25 4
gpt4 key购买 nike

在尝试寻找编写递归阶乘函数的不同可能性时,我注意到我对在以下递归函数中使用 whileif 的差异感到困惑。我使用 gdb 调试器 观察了每个选项的步骤,也看不出任何差异。我知道 while 循环的功能,并且它是迭代工作的。但是由于它的体中包含了函数的递归调用作为return语句,所以当前的函数应该'left'并且应该进入一个新的函数,这会导致进入一个新的while循环吗?在我看来,在这种情况下它的工作方式就像常规的 if 语句?我感谢对此的任何澄清。

#include <stdio.h>
#include <stdlib.h>

int recursion(int n)
{
while(n > 0)
return n * recursion(n-1);
return 1;
}

int main(void)
{
int n = 5;

printf("%d\n", recursion(n));

return EXIT_SUCCESS;
}

使用 if 的替代递归函数会产生相同的结果:

int recursion(int n)
{
if(n > 0)
return n * recursion(n-1);
return 1;
}

最佳答案

在这种情况下,这在技术上是相同的,因为一旦进入 while 循环,就可以使用 return 语句退出它。下面两条语句也是一样的:

while (a) {
b;
break;
}

if (a) {
b;
}

但是在这种情况下你不应该使用 while 因为它是用于循环的,所以应该有它执行多次的执行路径。同时存在 ifwhile 是有原因的。

关于C 递归中使用if或while的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34178725/

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