【发布时间】:2015-11-19 06:31:04
【问题描述】:
我在创建一个递归函数时遇到了一个问题,该函数打印出从 0 到传递的数字的偶数。我的问题?它只能有一个参数:int counting(int n)。我不知道该怎么做。主程序中没有循环。您必须从 0 开始,但要以某种方式将其设置为您传递的值。
对方法有什么想法吗?
【问题讨论】:
标签: recursion
我在创建一个递归函数时遇到了一个问题,该函数打印出从 0 到传递的数字的偶数。我的问题?它只能有一个参数:int counting(int n)。我不知道该怎么做。主程序中没有循环。您必须从 0 开始,但要以某种方式将其设置为您传递的值。
对方法有什么想法吗?
【问题讨论】:
标签: recursion
对于递归,您需要考虑基本情况(递归将停止并且您将开始返回调用堆栈的情况)。在这种情况下,您的方法需要不断调用自身,直到它降至 0。这意味着您需要在将参数减 1 直到值达到 0 后继续调用它。然后您需要检查是否number 是否为偶数,如果是,则打印该数字。
这是一个例子:
def printeven(n):
if n > 0:
printeven(n-1)
if n % 2 ==0:
print n
【讨论】:
在打印之前进行递归调用 - 它可以解决问题。 在 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;
}
【讨论】:
每个人给出的代码都是一样的,包括c中的这个。
int counting(int n) {
if(n)
counting(n-1);
if(!(n%2))
printf("%d\n", n);
}
诀窍是不断递归直到参数达到0,然后在返回给调用者之前开始打印数字。
【讨论】: