我是初学者,并不是我的想法用递归,它的任务。
答案 0 :(得分:2)
我会给你一个伪代码,不会破坏整个乐趣。诀窍是跟踪当前找到的最大值并将其与给定输入进行比较。
function max(current_max)
read number
if number == 0 return current_max
if number > current_max then current_max = number
return max(current_max)
您的约束暗示0
不能是您的最大函数的结果,因此将其作为初始值传递是安全的。所以你可以调用
print max(0)
并观看结果......
答案 1 :(得分:1)
令人震惊的是,abelenky的代码不会检查scanf
的返回值。这里有正确错误检查的代码:
#include <stdio.h>
int max(void)
{
int m, n;
return ((m = scanf("%d", &n), m --> 0) && n) ? n > (m =max()) ? n : m : 0;
}
int main(void)
{
printf("%d\n", max());
}
答案 2 :(得分:0)
#include <stdio.h>
int max(void)
{
int n,m;
printf("Enter a number (0 to end):\n");
scanf("%d", &n );
return !n?n:n>(m=max())?n:m;
}
int main(void) {
return !printf("The Maximum number is %d\n", max() );
}
<强>输出强>
Success #stdin #stdout 0s 4444KB
Enter a number (0 to end): 4
Enter a number (0 to end): 3
Enter a number (0 to end): 5
Enter a number (0 to end): 6
Enter a number (0 to end): 1
Enter a number (0 to end): 2
Enter a number (0 to end): 0
The Maximum number is 6