用递归确定C中的最大数量

时间:2018-04-19 20:29:16

标签: c recursion

我是初学者,并不是我的想法用递归,它的任务。

3 个答案:

答案 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