递归函数 - 从零开始打印到传递的数字

时间:2015-11-18 20:50:13

标签: recursion

我遇到了一个问题,就是创建一个递归函数,将偶数从0打印到传递的数字。我的问题?它只能有一个参数:int counting(int n)。我无法弄清楚如何做到这一点。主要没有循环。你必须从0开始,但不知怎的,它会达到你传递的价值。

关于该方法的任何想法?

3 个答案:

答案 0 :(得分:1)

使用递归,您需要考虑基本情况(递归将停止的情况,并且您将开始返回调用堆栈)。在这种情况下,你的方法需要一直调用自己,直到它降到0.这意味着你需要在将参数减少1之后继续调用它,直到值达到0.然后你需要检查号码是否均匀,如果是,则打印号码。

以下是一个例子:

def printeven(n):
   if n > 0: 
     printeven(n-1)
   if n % 2 ==0:
     print n 

答案 1 :(得分:0)

在打印之前进行递归调用 - 它会起作用。 在Java中:

int counting(int n) {
    if (n == 0)
        return n;
    int res = counting(n - 1);
    if (n % 2 == 0)
        System.out.println(n);
    return res;
}

答案 2 :(得分:0)

每个人提供的代码都相同,包括c中的代码。

int counting(int n) {
    if(n)
        counting(n-1);
    if(!(n%2))
        printf("%d\n", n);
}

诀窍是在参数达到0之前保持递归,然后在返回调用者之前开始打印数字。