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,有人说是没有意义,楼主自已斟酌...

解决方案 »

  1.   

    n=10时:
    执行else后面的语句10*function(9),连续调用function9次,直到n=1,然后返回上层
      

  2.   

    好象你还没弄明白递归的意思,流程就是重复调用这个函数本身。
    f(10)=10*f(9)=10*9*f(8)=...=10*9*8*...*2*f(1)
    而f(1)是return 1;的。
      

  3.   

    开始n=10
    执行10*9*8......
    当n=1时,return 1;
    是不是返回结果就是1了呢?
    那前面已经运算的值是怎么处理的呢
      

  4.   

    开始n=10
    执行10*9*8......
    当n=1时,return 1;
    是不是返回结果就是1了呢?
    那前面已经运算的值是怎么处理的呢
      

  5.   

    如果是1,真的会返回1 的
    对于递归,java本身会采取一种数据存储机制保存每次计算出来的n值,这个俺们完全不用担心的,所以递归一般耗内存很大的,自己掂量着办,^_^
      

  6.   

    那就算保存的话,那n的最后一个数肯定是1,只要是1,就return 1; 那最后值是不是就是返回1呢
      

  7.   

    这个例子似乎是<数据结构与算法 JAVA版>上面的例子
      

  8.   

    是不是返回结果就是1了呢?
    -----------------------
    function (1)=1
      

  9.   

    static long function (int n)
    {
      if(n<=1)
        return 1;
      else
        return n*function(n-1);
    }
      

  10.   

    我想问一下,当n=10时,
    程序会依次执行:10*9*8*7*6*5*4*3*2
    这时n=1,那么这时程序会return 1;
    那结果会不会是1呢恳切得到大侠的回复...
      

  11.   

    其实程序是这样执行的
    10*9*8*7*6*5*4*3*2*function (2)
      

  12.   

    哦,明白了,呵呵
    谢谢dengyin2000!!!