台创软启动荣军波是个程序菜鸟,调试通了以下程序。公布出来,欢迎拍砖!
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;
}
免费试用交大台创软启动啦!
扫描二维码,关注荣军波---交大台创软启动的最新电力电子产品研发动态
