我遇到了一个问题,就是创建一个递归函数,将偶数从0打印到传递的数字。我的问题?它只能有一个参数:int counting(int n)
。我无法弄清楚如何做到这一点。主要没有循环。你必须从0开始,但不知怎的,它会达到你传递的价值。
关于该方法的任何想法?
答案 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
之前保持递归,然后在返回调用者之前开始打印数字。