我是新手的递归方法,我只是不完全理解这个代码100%,或者我可以,但我可以对这段代码有一些想法吗?
public static void mystery(int n) {
if(n==0){
return;
}
if(n%3 == 0){
System.out.println(n);
}
mystery(n-1);
}
到目前为止,我知道它检查n是否为0,如果是,则返回。然后它检查int n是否可被3整除,如果是,那么它将打印出int n。然后它称为神秘(n-1)? 我不太了解最后一行代码。
答案 0 :(得分:6)
该方法无效,甚至无法编译。
假设它确实只打印了所有可被3整除的数字,而不是初始n。(调用神秘n - 1再次为下一个较小的int运行该函数)
代码
public static void mystery(int n) {
if (n == 0) {
return;
}
if (n % 3 == 0) {
System.out.println(n);
}
mystery(n-1);
}
调用5,该方法将检查5,既不是0也不能被3整除。因此它将在5 - 1或4上调用该方法。它将继续执行此操作,直到它达到0.打印出所有可以被3整除的数字。
答案 1 :(得分:5)
它会打印从n到0的所有数字,可以被3整除。
它与
具有相同的效果void mystery(int i)
{
while(i>0)
{
if(i%3 == 0)
{
print(i);
}
i--;
}
}
通常你可以使用这种方法(迭代)或递归方法来实现相同的结果。
答案 2 :(得分:5)
打印出所有可以除以3的数字,从数字开始,到3。
如果输入为16,则输出为15 12 9 6 3.
关于它的神秘是什么?
答案 3 :(得分:3)
您的代码会出现编译错误......我应该这样......
public static void mystery(int n) {
if(n==0){
return;
} //Missing in your case
if(n%3 == 0){
// System.out.println(n);
System.out.println(n);
} //Missing in your case
mystery(n-1);
}
它将打印0到n之间可被3整除的所有数字。
答案 4 :(得分:2)
此方法的作用是打印小于或等于输入的所有可被3整除的数字
答案 5 :(得分:1)
这样做是为了检查从n
到1开始的数字是否可以被3整除
这是细分:
int
作为参数调用函数n = n - 1
表示n
比传递的数字“少一个”答案 6 :(得分:0)
它会将n
的nos打印到0,可以被3整除。
假设n = 12.答案将是
12
9
6
3