为什么递归在 C 中没有按预期工作
Why is recursion not working as expected in C
我想将用户输入的 int 中的数字从 char 计数到零。此代码仅进行 1 个循环。 (请帮助我理解第二部分的错误。)
void count_down_from(int num);
int main()
{
int start;
char letter;
printf("print letter to reduce to zero in ACSCII");
scanf("%c", &letter);
count_down_from(letter);
return 0;
}
这部分工作不好:
void count_down_from(int num)
{
if (num > 0)
{
--num;
count_down_from;
printf("%d\n", num);
}
else
return;
}
}
预期的行为:
void count_down_from(int num)
{
printf("%d\n", num);
--num;
if (num < 0)
return;
else
count_down_from(num);
}
在第二个块中的函数调用中缺少 (num) 个。
看看我的修改
void count_down_from(int num)
{
if (num >= 0) //need the >= operator to go down to zero not just 1
{
printf("%d\n", num);
--num;
count_down_from(num); //you need to send num to the call otherwise it won't be a recursive function
}
else
return;
}
我想将用户输入的 int 中的数字从 char 计数到零。此代码仅进行 1 个循环。 (请帮助我理解第二部分的错误。)
void count_down_from(int num);
int main()
{
int start;
char letter;
printf("print letter to reduce to zero in ACSCII");
scanf("%c", &letter);
count_down_from(letter);
return 0;
}
这部分工作不好:
void count_down_from(int num)
{
if (num > 0)
{
--num;
count_down_from;
printf("%d\n", num);
}
else
return;
}
}
预期的行为:
void count_down_from(int num)
{
printf("%d\n", num);
--num;
if (num < 0)
return;
else
count_down_from(num);
}
在第二个块中的函数调用中缺少 (num) 个。
看看我的修改
void count_down_from(int num)
{
if (num >= 0) //need the >= operator to go down to zero not just 1
{
printf("%d\n", num);
--num;
count_down_from(num); //you need to send num to the call otherwise it won't be a recursive function
}
else
return;
}