当前位置: 首页 > 知识库问答 >
问题:

Java:有人能给我解释一下这个递归代码吗?

何峰
2023-03-14

我这里有一些关于Java的练习问题。我们应该在不使用编译器的情况下确定答案。

参考以下方法:

public static int  product(int n){
if (n <= 1)
    return 1;
else 
    return n * product(n-2);
}

调用product(6)时的输出是什么?

D)48

E)70

根据答案,正确的输出是48。我真的不明白为什么这是真的。6不符合基本情况,所以转到else语句。那么,乘积(6-2)=乘积(4),乘积(2)得到乘积(0),乘积(2)得到乘积(0),得到6*4,4*2,2*0,0*0。但那是32,不是48?是不是我漏了什么?

解释会非常有帮助,谢谢!

共有1个答案

养焱
2023-03-14

我刚才在这里用javascript回答了同样的问题:需要帮助理解来自雄辩javascript的递归函数示例

基本上它是一个堆栈,但更容易把它看成一个数学方程式:

n=6*乘积(4)

n=6*4*乘积(2)

n=6*4*2*乘积(0)

n=6*4*2*1

 类似资料:
  • 我有这两种方法。我理解“getTotalSalary”一词,但并不真正理解“getAverageSalary(获取平均工资)”的写作方式。我不明白为什么在结尾处使用问号和冒号以及“(size()!=0)”和0。 这是编码: empReg 是 ArrayList 的名称。员工是一个由“姓名”和“薪水”组成的阶级。getSalary 显然是一种返还薪水的方法。

  • 问题内容: 我只是在android上开始,而我的java很生锈。我不记得曾经见过像这样嵌套在另一个函数中的函数。有人可以向我确切解释final的作用,并解释为什么您要在另一个函数中嵌套这样的功能吗? 问题答案: 这是一个匿名类。实际发生的情况是正在使用重写的函数创建 的子类。 关于匿名类的最优雅的事情之一是,它们使您可以在需要的地方准确定义单发类。此外,匿名类具有简洁的语法,可减少代码中的混乱情况

  • 对于下面的方法,调用神秘(45)时,输出为“1 0 1 1 0:2 5 11 22 45”,我明白为什么“1 0 1 1 0:”打印出来,但不明白冒号后“2 5 11 22 45”是怎么打印出来的,有人能给我解释一下吗?我试着写出来,但就是想不通。

  • 我是Hibernate和JPA的新手,我对这个注释有问题。有人能简单地解释一下这个注释到底在做什么吗?因为在这种情况下,文档对我来说很难理解。 编辑我明白什么是持久上下文,但在代码中,我有这样的例子: 我对@PerustenceContext做什么有问题。抱歉,也许我没有具体说明。

  • 日安, 我有一个问题,在我的代码中,一个声明在函数之外有一个错误。 谢谢

  • 这是我从骡子3到骡子4转换的第一个项目。我与mule4一起工作,但在Mule3是新的。有谁能帮帮我吗?你能告诉我这些自定义处理器和变压器在这个mule3代码中的用途吗?而Mule4中的等价代码会是什么呢?在骡子4中没有像这样的自定义变压器。请帮帮我..