- public class Temp10_19
- {
- public static void main (String[] args)
- {
- System.out.println("用循环实现求 n! 的结果(n=4):"+f1(5));
- System.out.println("用递归实现求 n! 的结果(n=4):"+f2(5));
- }
- static long f1(int n)
- {
- long k=1;
- for(int i=1;i<=n;i++)
- k*=i;
- return k;
- }
- static long f2(int n)
- {
- if(n==1) return 1;
- else return n*f2(n-1);//这句不明白,请给我详细讲解一下!谢谢
- }
- }
- /*
- 这句话的意思是说将n-1作为参数传给f2.具体点说就是:
- 当调用f2(5)时,第一次n=5,运行到
- if(n==1) return 1;//判断不满足,继续执行
- else return n*f2(n-1);//返回的是5*f(n-1)
- n-1=4;注意此时是将4传给f2,也就是说这时n=4;
- 这里的n-1和n之间一定要区分开:
- n是f2的形式参数,只是一个代号,这里的n-1是一个具体的值。
- 然后再调用函数f2执行上面两句话,此时返回的是5*4*f2(n-1)
-
- */
复制代码 |