任务描述
本关任务:编写递归函数求数组从起始序号到结束序号之间数组元素的和。
相关知识
可以根据数组下标来设置递归执行的调用以及终止条件。 要计算数组a从起始序号start
到结束序号end
之间数组元素的和: (1)如果数组a
起始序号start
等于结束序号end
,那么返回值为此序号数组元素值a[start]
。 (2)如果数组a
起始序号start
小于结束序号end
,那么返回值为a[start]
与数组a
从start+1
到end
的之间数组元素的和。
编程要求
根据提示,在右侧编辑器补充代码。编写递归函数求数组从起始序号到结束序号之间数组元素的和。
测试说明
平台会对你编写的代码进行测试:
测试输入: 10
91
1
2
3
9
5
4
6
8
7
2
6
预期输出: 23
输入提示: 第一行表示数组元素的个数 第二行输入数组元素的值 第三行表示数组起始序号 第四行表示数组结束序号
输出提示: 数组从起始序号到结束序号之间数组元素的和
开始你的任务吧,祝你成功!
#include <stdio.h>
#define N 20
int Fun(int a[],int start,int end);
int main()
{
int a[N], sum;
int i,n,s,e;
//printf("输入整数个数:");
scanf("%d",&n);
//printf("输入%d个整数:\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
//printf("输入起始位数:");
scanf("%d",&s);
//printf("输入终止位数:");
scanf("%d",&e);
sum = Fun(a,s,e) ;
printf("%d\n",sum);
return 0;
}
/**********定义Fun()函数**********/
/********** Begin **********/
int Fun(int a[], int start, int end)
{
// Base case: If start exceeds end, return 0
if (start > end)
return 0;
// Recursive case: Add current element and recurse for the rest
return a[start] + Fun(a, start + 1, end);
}
/********** End **********/