Java中计算不起作用的阶乘的递归方法
用Java编写计算阶乘的递归方法。不幸的是,它不起作用,我怀疑这是因为我不太确定的两个参数——我用星号包围了这两个参数。这些是属于那里的正确参数吗?或者我需要把它们换成别的东西,为什么Java中计算不起作用的阶乘的递归方法,java,math,methods,recursion,factorial,Java,Math,Methods,Recursion,Factorial,用Java编写计算阶乘的递归方法。不幸的是,它不起作用,我怀疑这是因为我不太确定的两个参数——我用星号包围了这两个参数。这些是属于那里的正确参数吗?或者我需要把它们换成别的东西,为什么 public fact(n) { return this.factHelp(n, ***n+1*** ); } private factHelp(n, result) { if (n == 0) return result; else return this.factH
public fact(n)
{
return this.factHelp(n, ***n+1*** );
}
private factHelp(n, result)
{
if (n == 0)
return result;
else
return this.factHelp(n – 1, ***result***);
}
这段代码无法编译
public int-fact…
而不是public-fact…
fact(int n)
而不是fact(n)
你为什么不调试一下并找出答案呢?@user2777815 man确实发明了打印语句,想想你在做什么。您什么时候有变更结果?你只要把它传回去就行了。result/@Cruncher肯定会出什么事。我对编程相当陌生。不太确定如何使用print语句来调试..@Cruncher有点道理。我必须从结果中不断减去1吗?我从来没有听说过“TCO变量”这个短语,问这个问题的人可能也没有听说过。你能详细说明一下吗?这样可以更容易地设置初始调用条件(从外部代码)。我错了。这是这样写的(相对于添加到方法的返回)。但是,请看前面的评论-我认为这里使用两种方法更好,因为它隐藏了内部内容。@user2246674坦白地说,在真实的word场景中,我只会使用迭代。为什么要使用堆栈空间?@Cruncher因为“不预先优化”。