n=10 n==1 =false :return 10*function(9)
n=9 n==1 =false : return 9*function(8)
……………………………………………………
就这样一级一级的执行下去直到n=1但这样程序有问题,开始应该对n的取值做判断,一般来说只有正整数才有阶乘,所以一开始要加上n>0.至于0的阶乘,有人说是1,有人说是没有意义,楼主自已斟酌...
n=9 n==1 =false : return 9*function(8)
……………………………………………………
就这样一级一级的执行下去直到n=1但这样程序有问题,开始应该对n的取值做判断,一般来说只有正整数才有阶乘,所以一开始要加上n>0.至于0的阶乘,有人说是1,有人说是没有意义,楼主自已斟酌...
执行else后面的语句10*function(9),连续调用function9次,直到n=1,然后返回上层
f(10)=10*f(9)=10*9*f(8)=...=10*9*8*...*2*f(1)
而f(1)是return 1;的。
执行10*9*8......
当n=1时,return 1;
是不是返回结果就是1了呢?
那前面已经运算的值是怎么处理的呢
执行10*9*8......
当n=1时,return 1;
是不是返回结果就是1了呢?
那前面已经运算的值是怎么处理的呢
对于递归,java本身会采取一种数据存储机制保存每次计算出来的n值,这个俺们完全不用担心的,所以递归一般耗内存很大的,自己掂量着办,^_^
-----------------------
function (1)=1
{
if(n<=1)
return 1;
else
return n*function(n-1);
}
程序会依次执行:10*9*8*7*6*5*4*3*2
这时n=1,那么这时程序会return 1;
那结果会不会是1呢恳切得到大侠的回复...
10*9*8*7*6*5*4*3*2*function (2)
谢谢dengyin2000!!!