以递归方法求数组元素的和,要求分别求偶、奇下标的和,再求总和


 台创软启动荣军波是个程序菜鸟,调试通了以下程序。公布出来,欢迎拍砖!

5-5  (1 满分)
题目描述
以递归方法求数组元素的和,要求分别求偶、奇下标的和,再求总和
 
注意:此题很明显用递归并不简便,但为了锻炼同学们递归的思想并熟练其用法,要求以递归方法解答。
 
输入格式
一行输入,数字以空格隔开,下标从0开始
 
输出格式
输出三行,第一行偶下标的和;第二行奇下标的和;第三行总和
 
#include <iostream>
using namespace std;
 
 int adde=0;
int add(int *array,int len)
       if(len==0)
        return adde;
      
        return adde=array[len-1]+add(array,len-1);
       //   cout<<adde<<endl;
   
}
 
int main()
{
  int len,addc=0,addd=0,addf=0;
  cin>>len;
  int *array=new int[len];
  for(int i=0;i<len;i++)
      cin>>array[i];
   
     addc=add(array,len);
    // cout<<addc<<endl; //重复调用递归函数,返回值会累加。 
    
 
  int middle=len/2 ;
  int *jiarray=new int[middle],*ouarray=new int[middle];
  int left_idx=0,right_idx=0;
 
 
   for(int i=0;i<len;i++)
     { 
      if(i%2==0)
        {ouarray[right_idx]=array[i];
    //    cout<<array[i]<<' ';
      //  cout<<ouarray[right_idx]<<' ';
       
         right_idx++;
        }
      else
        {jiarray[left_idx]=array[i];
       //  cout<<array[i]<<' ';
        // cout<<jiarray[left_idx]<<' ';
          
         left_idx++;
         }
     }
 
     cout<<endl;
  
  // for(int i=0;i<right_idx;i++)
 //  cout<<ouarray[i]<<' ';
 //  cout<<endl;
  // cout<<right_idx<<endl;
 
  // for(int i=0;i<left_idx;i++)
  //  cout<<jiarray[i]<<' ';
  //  cout<<endl;
   // cout<<left_idx<<endl;
  
     addd=add(ouarray,right_idx)-addc;//重复调用递归函数,返回值会累加。必须要减掉 
   cout<<addd<<endl;//偶数相加 
 
     addf=add(jiarray,left_idx)-addd-addc;//重复调用递归函数,返回值会累加。必须要减掉 
   cout<<addf<<endl;//奇数相加 
   cout<<addd+addf<<endl;//求和 
 
  return 0;
 
免费试用交大台创软启动啦!
 
扫描二维码,关注荣军波---交大台创软启动的最新电力电子产品研发动态