java递归,求教

来源:百度知道 编辑:UC知道 时间:2024/06/01 11:34:13
class Factorial{
int fact(int n){
int result;
if(n==1)
return 1;
result=fact(n-1)*n;
return result;
}
}
class Recursion
{
public static void main(String[] args)
{
Factorial f=new Factorial();
System.out.println("Factorial of 3 is "+f.fact(3));
System.out.println("Factorial of 4 is "+f.fact(4));
System.out.println("Factorial of 5 is "+f.fact(5));
}
}
PS:想在fact()中插入println()语句,显示每次调用的阶数以及中间结果,该怎么实现呢?谢谢您的赐教!
lijintao520的是正确的,我想问一下,为什么System.out.println("中间结果:(阶数是["+n+"])"+result);中result要有那个加号呢?我当初就是没有加号而错误的。
希望指导下了,我是初学者了,谢谢!!!

class Factorial{
int fact(int n){
int result;
if(n==1)
return 1;
result=fact(n-1)*n;
System.out.println("中间结果:(阶数是["+n+"])"+result);
return result;
}
}
class Recursion
{
public static void main(String[] args)
{
Factorial f=new Factorial();
System.out.println("Factorial of 3 is "+f.fact(3));
System.out.println("Factorial of 4 is "+f.fact(4));
System.out.println("Factorial of 5 is "+f.fact(5));
}
}

答案补充:
《result前面为什么要有那个加号呢?》
原因:因为System.out.println函数的参数必须是String类型,而String+int=String, 所以必须加+号了。

for(int i=1;i<=n;i++)
{
System.out.println("Factorial of"+i+" is"+f.fact(i));
}
把这句话加入到fact()函数里,应该能满足你的条件,你试试看。