每日总结

今天复习的是方法的递归,递归是一种写起来比较简单的方式,但是需要理解函数之间的递归关系。

以求n的阶乘为例:

public class CalculateN
{

/**
* @param args
*/
public static void main(String[] args)
{
System.out.print("请输入N:");
Scanner scanner=new Scanner(System.in);
int number=scanner.nextInt();
System.out.println(number+"!="+calculateN2(number));

}

public static long calculateN(int n)
{
if(n==1 || n==0)
{
return 1;
}

return n*calculateN(n-1);
}

public static BigInteger calculateN2(int n)
{
if(n==1 || n==0)
{
return BigInteger.valueOf(1);
}
return BigInteger.valueOf(n).multiply(calculateN2((n-1)));
}
}

从n!的数学公式可以看到,要计算n!可以先计算(n-1)!,得到(n-1)!的结果之后,将其乘以n就得到n!。

这个过程可以一直持续到2!,这时,1!=1已知,于是可以计算出2!。

由2!再倒推出3!,4!,…,最后得到n!,问题解决

分析: 函数f(n):返回n! 递归公式:f(n)=n*f(n-1) 结束递归的条件:n=1

原文地址:https://www.cnblogs.com/lxywsx/p/14175297.html