【发布时间】:2021-07-08 19:52:48
【问题描述】:
我的问题是当我运行代码时,循环会无限进行。预期的输出是打印 hi 5 次然后转到新行并打印 4 次 3 等等我无法理解是什么导致循环无限。
#include <stdio.h>
int star(int);
int main()
{
printf("enter number\n");
int a;
scanf("%d", &a);
star(a);
return 0;
}
int star(int m)
{
int n;
for (n = 0; n < m; n++)
{
printf("hi");
}
printf("\n");
star(m - 1);
return 0;
}
【问题讨论】:
-
你有没有终止条件的递归。
-
我..看看你的代码。
star什么时候会不再自称? -
我如何在 c 初学者中添加终止条件
-
取决于你想要做什么。
-
您可能想以
if (m < 0) return 0;之类的开头star或使用if(m > 0) star(m-1);保护star(m-1);。这样,一旦 m 变为负数,它就不会继续调用自己。
标签: c loops for-loop recursion function-definition