【发布时间】:2020-12-11 09:51:41
【问题描述】:
我遇到了递归问题,我试图让用户输入一个数字并将数字打印到屏幕上的数字 1。
(如果您向我解释解决方案的工作原理,我将不胜感激,因为我正在学习,这对我来说非常复杂。)
例如,用户输入数字 5,我希望它显示: 5. 4. 3. 2. 1.
#include<stdio.h>
int list(int n);
int main(){
int i,number;
printf("Enter a number: ");
scanf("%d",&number);
for(i = number;i > 0;i--){
printf("%i.\n", list(i));
}
return 0;
}
int list(int n){
if(n == 1||n == 0){
return 1;
}
else{
return list(n);
}
}
【问题讨论】:
-
仅供参考,
return list(n)当您传递的参数值与您在第一名?仅供参考,这个练习的重点是递归。 IE。 for 循环不应该在这段代码中,输出应该在递归函数本身中。 -
这些都没有任何意义。您希望
list(n)返回n,对吗?使用递归来获得你已经拥有的值有什么意义?在任何情况下,如果你从list(n)中调用list(n),你只会递归直到耗尽你的堆栈空间。
标签: c recursion printf function-definition