尝试了一个打印前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
的值,而不是像您的版本中那样在