非递归的程序如下:
  public static void m4(int n){
  int sum=0;
  for(int i=0;i<=n;i++){
  System.out.print((sum+=i*i)+" ");
  }
  }
我自己改过一下,如下:
    public static void m6(int n){
  if(n>0){
   m6(n-1);
  }
    System.out.print((sum+=n*n)+" ");
}但是SUM不能保存递归返回的和(SUM在方法外面定义了,我这里没有写出来),在这里请教下,上面那个循环怎么用递归实现?谢谢

解决方案 »

  1.   

    你可以返回一个 参数啊    public static int m6(int n){
             imt sum=0;
             if(n>0){
                   sum=m6(n-1);
              }
              System.out.print((sum+=n*n)+" ");
              return sum;
        }最后你在外面sum=m6(n)就行了,不知道你是不是这个意思
      

  2.   

    你把sum+=n*n放在if的第一句就可以了,看看就觉得逻辑不正确
      

  3.   

    可以保存吧,sum是静态的。但这样好像和递归没什么关系
      

  4.   


    public static int M(int i){//LZ可以对 i 加些判断条件
            if(i == 0)
                return 0;
            else
                return i*i + M(i - 1);
        }
      

  5.   

    public static int M(int i)
    {        
             if(i == 1)
                return 1;
            else
                return i*M(i - 1);
    }
      

  6.   


    public class digui {
     long sum = 0;
    int i = 0;
    public long m6( int n ) {


    if ( i <= n ) {
    sum += i*i;
    i++;
    m6( n );
    }
    return sum;



    } public static void main(String args[]) {
    digui object1 = new digui();
    System.out.print(object1.m6(4));

    System.exit(0);
    }
    }
    楼主试试这个 这个就可以了
      

  7.   

       private static int sum=0;
     public static void m6(int n){
             if(n>0){
              m6(n-1);
             }
               System.out.print((sum+=n*n)+" ");
        }
      

  8.   

    if(n>0){
       m6(n-1);
    }递归方法当中不是要写递归继续执行下去的条件
    而是要写递归到终点返回的条件