有两种方法,递归和for循环
package com.hm.demo01; public class Test { public static void main(String[] args) { long result=func(10); System.out.println(result); } public static long func(long n) { if(n==1) { return 1; } return n*func(n-1); } }
package com.hm.demo01; public class Test02 { public static void main(String[] args) { long result=func2(10); System.out.println(result); } public static long func2(long n) { long result=1; for(long i=1;i<=n;i++) { result=result*i; } return result; } }
第一种方法,要调用10次func函数,所以在栈内存里要开辟10个内存空间
而第二种方法,只用调用1次func2函数,所以在栈内存里只要开辟一块内存就好了,
因此,第二种解法更优