使用递归实现数组求和示例分享

时间:2023-04-24 02:17:40 

思路如下:

给定一个含有n个元素的整型数组a,求a中所有元素的和。问题的难点在于如何使用递归上。如果使用递归,则需要考虑如何进行递归执行的开始以及终止条件,首先如果数组元素个数为0,那么和为0。同时,如果数组元素个数为n,那么先求出前n-1个元素之和,再加上a[n-1]即可。此时可以完成递归功能。总之,递归就是在某个函数的执行过程中首先判断它的终止条件参数,终止条件参数满足终止条件则执行完毕,终止条件参数不满足终止条件则调用它自身执行某项运算,比如这里求和就是执行加法。凡是递归一定都有一个参数作为终止条件,比如这里是数组中未加入求和队列的元素个数,初始为数组长度。因为终止条件参数的初始值为数组长度,所以从数组的最后一个元素作为求和队列的第一个元素开始,每递归一次就将数组中的一个元素划归到求和队列中,同时将终止条件参数减1,直到其未为0,标明所有元素都已加入求和队列,返回求和队列的值即可。可见递归至少有两个参数,终止条件参数以及递归对象。

代码如下:


// 1311.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include<stdio.h>
int GetSum(int *a,int n)
{
    return n == 0 ? 0 : GetSum(a,n - 1) + a[n-1];
}
int main()
{
    int a[] = { 3, 6, 8, 2, 1 };
    int length = sizeof(a) / sizeof(a[0]);
    printf("%d\n", GetSum(a, length));
    getchar();
    return 0;
}

标签:数组,递归
0
投稿

猜你喜欢

  • win7配置adb环境变量的方法步骤

    2022-11-10 16:45:12
  • c#实现多线程局域网聊天系统

    2022-12-01 23:34:25
  • C#实现导入CSV文件到Excel工作簿的方法

    2022-09-13 12:24:02
  • 浅析SpringCloud Alibaba-Nacos 作为注册中心示例代码

    2022-12-04 14:24:00
  • Spring Boot应用监控的实战教程

    2022-03-02 18:17:09
  • Flutter之Timer实现短信验证码获取60s倒计时功能的代码

    2023-07-20 20:00:30
  • 关于springboot2整合lettuce启动卡住问题的解决方法

    2022-08-24 09:29:16
  • 详解kotlin中::双冒号的使用

    2022-09-04 10:17:23
  • C# 开发(创蓝253)手机短信验证码接口的实例

    2023-05-22 11:15:54
  • C#知识整理

    2021-08-02 18:24:26
  • java数组元素的引用实例讲解

    2023-12-02 16:40:32
  • java 对象输入输出流读写文件的操作实例

    2021-06-13 15:24:30
  • Springboot集成JUnit5优雅进行单元测试的示例

    2021-09-24 07:49:58
  • Android List(集合)中的对象以某一个字段排序案例

    2021-10-07 03:28:39
  • IDEA将Maven项目中指定文件夹下的xml等文件编译进classes的方法

    2023-05-07 07:34:50
  • java注解结合aspectj AOP进行日志打印的操作

    2023-10-23 14:02:53
  • 提示信息控件AlertDialog对话框详解

    2022-04-18 22:20:45
  • Java根据模板导出Excel报表并复制模板生成多个Sheet页

    2022-09-09 01:16:01
  • Mybatis批量插入更新xml方式和注解方式的方法实例

    2022-06-17 18:09:09
  • C#应用ToolStrip控件使用方法

    2023-05-23 09:10:18
  • asp之家 软件编程 m.aspxhome.com