用于检查最小数量的递归函数

时间:2017-12-19 16:29:17

标签: recursion

我的问题很简单,教导我在递归函数方面做得不好。

编写一个递归函数,扫描自然的数字序列(n> 0),直到-1的停止条件。 如果序列中没有数字,程序应打印-1。 (例如:对于序列5,7,8,4,3,5,-1,程序应打印3。

所以这就是我得到的:

void Ex1() {
    printf("Enter sequence of numbers until -1");
    minimal_recursive_function();
}

int minimal_recursive_function() {
    int n, min;
    scanf("%d", &n);
    if ((min > n) && (n>0)) {
            min = n;
    }
    if (n == -1) {
        return min;
    }
    else {
        minimal_recursive_function(min);
    }
    printf("%d", min);
}

该计划不会参加课程,因为我没有任何关于分钟的价值。我不能放n = min;同样。 *注意 - 递归函数不应该从其他函数中接收任何参数。

当然想得到提示。

1 个答案:

答案 0 :(得分:0)

您可以通过将第一次迭代视为特殊情况并在开始递归之前单独处理它来解决第一次没有参数传递的问题。这样,您可以轻松处理在-1之前没有输入值的特殊情况,并且您有一个值来启动递归。

void Ex1() {
    int start;
    scanf("%d", &start);
    if (start == -1) printf("-1");
    else printf("%d", minimal(start));
}

int minimal(int min) {
    int n;
    scanf("%d", &n);
    if (n == -1) return min;
    if (n < min) min = n;
    return minimal(min);
}