C语言递归实现数组求和

(3) 2024-05-06 21:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说C语言递归实现数组求和,希望能够帮助你!!!。

C语言递归实现数组求和

一.基本思想(分而治之):

  1. 基线条件:
    显然最简单的情况:数组只有一个数时,无需任何操作,直接返回其值即可;
    所以基线条件为数组长度为1;
  2. 递归条件:
    每一次加上数组最后一位并缩短数组长度以丢掉它;

二.问题及解决

  1. 数组的输入问题:怎么实现让自己输入自己想求得的数组的和,而不是只能求固定数组。
    解:利用c99变长数组,自己输入数组长度和具体数字;(缺陷:需要用户数自己数字的长度,未解决)
  2. 递归的条件中,每一次应该在上一次调用的基础上减一,最好定义新的变量,避免此问题;
#include <stdio.h>
int sum(int a[],int len);
int main()
{
	int i,len;
	printf("Enter the len:");
	scanf("%d",&len);//利用变长数组,先输入求和数组的长度

	int a[len];
	printf("Enter the number:");
	for(i=0;i<len;i++){
		scanf("%d",&a[i]);
    }//输入数组的具体数字
	
	int sumall;	
	sumall=sum(a,len);
	printf("the sum of your number is %d",sumall);//求和并输出
}
int sum(int a[],int len)
{
	if(len==1)//基线条件
	return a[len-1];
	else{
	int n=len-1	;
	return a[n]+sum(a,len-1);//用n替换len-1;避免a[len-1]后误以为应该是+sum(a,len-2);递归调用,传入参数每次改变1;
    }
}

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复