递归代码它不能正常工作,这里可能有什么问题



尝试了一个打印前50个自然数的程序。我写了这段代码,它使用递归返回值,但没有打印任何内容,也没有返回任何值。我做错了什么?

#include <stdio.h>
int naturalNumbers(int i)
{
if (i == 1)
{
return 1;
}
else
{
naturalNumbers(i--);
return i;
}
}

int main()
{
printf("%d", naturalNumbers(50));
return 0;
}

下面的递归将按递增顺序打印数字

void naturalNumbers(int i)
{
if(i<1) return; //base case
naturalNumbers(i-1);
printf("%d ", i);
}
naturalNumbers(50); // call from main function

为了避免创建无休止的循环,您应该如下修改naturalNumbers函数:

int naturalNumbers(int i)
{
if (i == 1)
{
return 1;
}
else
{
naturalNumbers(--i);
return i;
}
}            

这将在调用naturalNumbers之前减少i的值,而不是像您的版本中那样在

相关内容

最新更新