今天复习的是方法的递归,递归是一种写起来比较简单的方式,但是需要理解函数之间的递归关系。
以求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