应该是选择B. f(1)=1.排除法,D显然不可能。然后n>1。就排除A,C

解决方案 »

  1.   

    应该是选择B. f(1)=1.排除法,D显然不可能。然后n>1,根据公式f(n)=f(n-1)+n  (n>1)。就排除A,C.
      

  2.   

    应该是选择B. f(1)=1,根据我的算法经验,1>1吗?所以在n=1时程序出口。
      

  3.   

    int f(int n){
      if(n>1){
        return f(n-1)+n;
      }
      else{
        return ... ??
      }
    }还是说int f(int n){
      int tempi; // here default is 0, according to the definition of java language.
      if(n>1){
        tempi=f(n-1);
      }
      return tempi + n;
    }那里来的题目?
    出口条件 不是 n>1 ?中学的时候,老师也许就会告诉我们:“这个题目出得有问题。”为了在有效的时间里面得到足够高的分数,直接放弃这个题目,随便选个答案。n! = n*(n-1)*...*2*1 然后 0!=1 ?
    这个最后的值应该是手工设定的。
    如果是 c/c++ 这个 tempi的值,如果不是手工初始化,值就会是任意的。
      

  4.   


    int f(int n){
      if(n>1){
        return f(n-1)+n;
      }
      else{
        return 1
      }
    }
      

  5.   

    public class Test{

     public static void main(String[] args)
     {
      Test m = new Test();
      m.ff();
     }
     private int f(int n){
      if(n>1){
        return f(n-1)+n;
      }
      else{
        return 1;
      }
    }
    private void ff()
    {
    System.out.println("10+9+8+...+1="+ f(10));
    }
     
    };
      

  6.   

    回复人: caihongdaxian(彩虹) ( ) 信誉:100  2004-06-11 22:54:00  得分: 0  
        应该是A,若在不给出条件是的系统环境默认值为0;
    -------------
    你这叫画蛇添角:)谁出的题目啊?扁他!!不过,估计他要你选B!如果不是多选,那你就选B
    好了。因为这样刚好符合 1+2+3+4..... 这个题目。这有什么好郁闷的啊?真是。  
     
      

  7.   

    static double PowerCalc(double x,int n)
    {
    if(n>1)
    return x*PowerCalc(x,n-1); 
    else if(n<0)
    return 1.0/PowerCalc(x,-n);
    else
    return n==0?1.0:x;
    }
    当n>1时,连续执行n次x*PowerCalc(x,n-1);返回它们的连乘积;
    当n<0时,连续执行n次x*PowerCalc(x,n-1);返回它们的连乘积的倒数;你理解一下只考虑n>0时,递归结构的写法:
    static double PowerCalc(double x,int n)
    {
    if(n>1)
    return x*PowerCalc(x,n-1); 
    else 
    return 1;
    }
    调用 System.out.println(PowerCalc(2,4));
    单步调试查看n的值,就可以发现这个递归实际等价于:
    for (int s = 1,i = n; i > 0; --i)
      s *= x;
    原程序中,考虑到n < 0,就是返回x^|n|的倒数