c语言递归求组合数_c语言求一维数组元素之和

c语言递归求组合数_c语言求一维数组元素之和C语言递归实现数组求和一.基本思想(分而治之):1.基线条件:显然最简单的情况:数组只有一个数时,无需任何操作,直接返回其值即可;所以基线条件为数组长度为1;2.递归条件:每一次加上数组最后一位并缩短数组长度以丢掉它;二.问题及解决1.数组的输入问题:怎么实现让自己输入自己想求得的数组的和,而不是只能求固定数组。解:利用c99变长数组,自己输入数组长度和具体数字;(缺陷:需要用户…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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;
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186735.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • method exists php,浅谈php method_exists检测类中是否包括函数

    method exists php,浅谈php method_exists检测类中是否包括函数php教程method_exists检测类中是否包括函数?或许有些人不是很明白其中道理,下面做如下详细分析。method_exists()函数的语法如下:boolmethod_exists(objectobject,stringmethod_name)method_exists()函数的作用是检查类的方法是否存在。如果method_name所指的方法在object所指的…

    2022年7月15日
    16
  • vue 父组件调用子组件的函数_vue子组件触发父组件方法

    vue 父组件调用子组件的函数_vue子组件触发父组件方法1、使用场景项目里将element-ui的el-upload写成公共组件方便调用,官方的before-upload方法用于处理上传前要做的事,如:比较文件大小,限制文件类型等,通过返回true或false控制是否上传。当该组件调用父组件方法,并且要能获取到父组件方法的返回值,如何实现?2、问题说明通常子组件调用父组件方法:this.$emit(方法名,传参1,传参2),但是此方法…

    2022年9月28日
    3
  • pycharm2018设置中文界面_pycharm界面

    pycharm2018设置中文界面_pycharm界面pycharm中文版界面设置:(推荐学习:python视频教程)jJ1少儿编程网-Scratch_Python_教程_免费儿童编程学习平台1、找到pycharm的文件安装位置jJ1少儿编程网-Scratch_Python_教程_免费儿童编程学习平台jJ1少儿编程网-Scratch_Python_教程_免费儿童编程学习平台2、找到语言文件应安装的文件夹jJ1少儿编程网-Scratch_Python_…

    2022年8月25日
    7
  • Ubuntu下安装cuda_Ubuntu下KDE的安装删除

    Ubuntu下安装cuda_Ubuntu下KDE的安装删除Ubuntu下安装CUDA、cuDNN;多版本安装

    2022年9月23日
    2
  • datagrip mac激活码 2021(注册激活)

    (datagrip mac激活码 2021)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

    2022年3月21日
    407
  • 概念模型设计「建议收藏」

    4.1.3     概念模型设计概念模型不依赖于具体的计算机系统,他是纯粹反映信息需求的概念结构。建模是在需求分析结果的基础上展开,常常要对数据进行抽象处理。常用的数据抽象方法是‘聚集’和‘概括’。ER方法是设计概念模型时常用的方法。用设计好的ER图再附以相应的说明书可作为阶段成果

    2022年4月6日
    105

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号