Java中的递归方法不起作用。有什么想法吗?
我试图理解Java中的递归方法,并尝试使用这个简单的方法来计算阶乘。 不知怎的,它不起作用了。有人能告诉我为什么吗Java中的递归方法不起作用。有什么想法吗?,java,recursion,factorial,Java,Recursion,Factorial,我试图理解Java中的递归方法,并尝试使用这个简单的方法来计算阶乘。 不知怎的,它不起作用了。有人能告诉我为什么吗 public class FactorialRecursive extends ConsoleProgram { public void run() { println("This program calculates the factorial of an integer n."); int n = readInt("Please insert n
public class FactorialRecursive extends ConsoleProgram {
public void run() {
println("This program calculates the factorial of an integer n.");
int n = readInt("Please insert n: ");
int result = factorial(n);
println("The factorial of " + n + " is " + result);
}
private int factorial(int n) {
int total;
if (n == 1) total = 1;
total = n * factorial(n - 1);
return (total);
}
}
这是因为基本情况(
n==1
)不会立即返回
您只分配total
,但不返回:相反,您再次使用n*factorial(n-1)
,进入无限递归
用替换来修复
if (n==1) return 1;
或添加其他
:
if (n==1) total = 1;
else total = n * factorial (n-1);
这是因为基本情况(
n==1
)不会立即返回
您只分配total
,但不返回:相反,您再次使用n*factorial(n-1)
,进入无限递归
用替换来修复
if (n==1) return 1;
或添加其他
:
if (n==1) total = 1;
else total = n * factorial (n-1);
您没有终止递归。试一试
if (n==1) total = 1;
else total = n * factorial (n-1);
您没有终止递归。试一试
if (n==1) total = 1;
else total = n * factorial (n-1);
问题是,当你找到你的基本情况时,你不会停止
if (n==1) total = 1;
宁可
if (n==1) return 1;
问题是,当你找到你的基本情况时,你不会停止
if (n==1) total = 1;
宁可
if (n==1) return 1;
更换线路:
if (n==1) total = 1;
作者:
否则,将无限循环
你的方法是:
private int factorial(int n) {
return n==1 ? 1 : n * factorial (n-1);
}
更换线路:
if (n==1) total = 1;
作者:
否则,将无限循环
你的方法是:
private int factorial(int n) {
return n==1 ? 1 : n * factorial (n-1);
}
当它降到n==1时,你应该返回,否则你仍然进入阶乘,再也不会出现错误Bugging是你的朋友,你会在一分钟内发现错误:-)当它降到n==1时,你应该返回,否则你仍然进入阶乘,再也不会出现错误Bugging是你的朋友,您可能会在一分钟内发现该错误:-)