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

思路如下:

给定一个含有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)

相关推荐

  • Java之递归求和的两种简单方法(推荐)

    方法一: package com.smbea.demo; public class Student { private int sum = 0; /** * 递归求和 * @param num */ public void sum(int num) { this.sum += num--; if(0 < num){ sum(num); } else { System.out.println("sum = " + sum); } } } 方法二: package com.smbea

  • Java递归算法的使用分析

    递归算法是一种直接或者间接地调用自身的算法.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 问题1:一列数的规则如下: 1.1.2.3.5.8.13.21.34 ,求第30位数是多少?使用递归实现 复制代码 代码如下: public class FibonacciSequence {    public static void main(String[] args){        System.out.println(Fribonacci(9))

  • java 递归深入理解

    一.递归函数,通俗的说就是函数本身自己调用自己... 如:n!=n(n-1)! 你定义函数f(n)=nf(n-1) 而f(n-1)又是这个定义的函数..这就是递归 二.为什么要用递归:递归的目的是简化程序设计,使程序易读 三.递归的弊端:虽然非递归函数效率高,但较难编程,可读性较差.递归函数的缺点是增加了系统开销,也就是说,每递归一次,栈内存就多占用一截 四.递归的条件:需有完成任务的语句,需满足递归的要求(减小而不是发散) 五.递归进阶: 1.用递归算n的阶乘: 分析:n!=n*(n-1)*(

  • java实现递归文件列表的方法

    本文实例讲述了java实现递归文件列表的方法.分享给大家供大家参考.具体如下: FileListing.java如下: import java.util.*; import java.io.*; /** * Recursive file listing under a specified directory. * * @author javapractices.com * @author Alex Wong * @author anonymous user */ public final cla

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

    思路如下: 给定一个含有n个元素的整型数组a,求a中所有元素的和.问题的难点在于如何使用递归上.如果使用递归,则需要考虑如何进行递归执行的开始以及终止条件,首先如果数组元素个数为0,那么和为0.同时,如果数组元素个数为n,那么先求出前n-1个元素之和,再加上a[n-1]即可.此时可以完成递归功能.总之,递归就是在某个函数的执行过程中首先判断它的终止条件参数,终止条件参数满足终止条件则执行完毕,终止条件参数不满足终止条件则调用它自身执行某项运算,比如这里求和就是执行加法.凡是递归一定都有一个参数作

  • php删除数组元素示例分享

    PHP删除数组元素的具体方法: 1.用unset()方法: 复制代码 代码如下: <?php$a=array("red", "green", "blue", "yellow");   count($a); //得到4   unset($a[1]); //删除第二个元素   count($a); //得到3   echo $a[2]; //数组中仅有三个元素,本想得到最后一个元素,但却得到blue,   echo $a[1

  • PHP数组递归排序实现方法示例

    本文实例讲述了PHP数组递归排序实现方法.分享给大家供大家参考,具体如下: /** * 递归根据特定key对数组排序 * @param $data * @param string $orderKey * @param string $sonKey * @param int $orderBy * @return mixed */ function recursion_orderby($data, $orderKey = 'order', $sonKey = 'children', $orderBy

  • 分享JS数组求和与求最大值的方法

    前言 面试遇到一个问题:JS数组求和函数.我第一想到的就是数组循环.然而我觉得面试官问这个问题一定不是想考这个人人皆知的方法.当时机智的我竟然想到了递归函数不断加和数组的项,然而折腾了好久都没调好方法,事实证明这并不是最优解.最后面试官问我有没有见过reduce(),真木有哇.所以回来查资料,Array.reduce()是ES5新增的新属性,相似的还有Array.reduceRight(). 下文来总结一下数组求和的方法. 最粗暴的方法:循环获取 通过for循环一项项地加和.看代码: Array

  • JavaScript学习笔记之数组求和方法

    推荐阅读:JavaScript学习笔记之数组的增.删.改.查 通过最近学习,越来越感觉JavaScript的强大与魅力之处,仅数组一个知识点就让我这样的初学者折腾了很久.折腾是折腾,但还是很有效果的,这几天的学习到的一些基本知识,就在自己的业务就用到了.顿感自信心爆棚,我也有一天能学会JavaScript. 别的不多说了,咱们今天一起来玩数组的求和,看看有哪些方法可以实现数组的求和. 数组方法 JavaScript中数组有很多种方法,下图能更好的向你阐述JavaScript有多少种方法,作用是啥

  • JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例

    本文实例讲述了JavaScript实现多叉树的递归遍历和非递归遍历算法操作.分享给大家供大家参考,具体如下: 演示之前的准备工作 演示项目的文件结构: index.html jsonData.js recurrenceTree.js noRecurrenceTree.js 解释一下各个文件: index.html 是用来演示的 HTML 文件. jsonData.js 里面存储着多叉树的JSON数据. recurrenceTree.js 递归算法遍历树. noRecurrenceTree.js

  • JS数组求和的常用方法总结【5种方法】

    本文实例总结了JS数组求和的常用方法.分享给大家供大家参考,具体如下: 题目描述 计算给定数组 arr 中所有元素的总和 输入描述: 数组中的元素均为 Number 类型 输入例子: sum([ 1, 2, 3, 4 ]) 输出例子: 10 方法1. 不考虑算法复杂度,用递归做: function sum(arr) { var len = arr.length; if(len == 0){ return 0; } else if (len == 1){ return arr[0]; } else

  • PHP递归调用数组值并用其执行指定函数的方法

    本文实例讲述了PHP递归调用数组值并用其执行指定函数的方法.分享给大家供大家参考.具体分析如下: 以下为wordpress原代码,为了偷懒,简单修改一下以适用其它函数 /** * Navigates through an array and removes slashes from the values. * * If an array is passed, the array_map() function causes a callback to pass the * value back t

  • Python实现翻转数组功能示例

    本文实例讲述了Python实现翻转数组功能.分享给大家供大家参考,具体如下: 题目描述 给定一个长度为n的整数数组a,元素均不相同,问数组是否存在这样一个片段,只将该片段翻转就可以使整个数组升序排列.其中数组片段[l,r]表示序列a[l], a[l+1], ..., a[r].原始数组为 a[1], a[2], ..., a[l-2], a[l-1], a[l], a[l+1], ..., a[r-1], a[r], a[r+1], a[r+2], ..., a[n-1], a[n], 将片段[

  • Python numpy.array()生成相同元素数组的示例

    如下所示: new_array = np.zeros((5,4)) for i in range(3): new_array[i] = np.array([0.25]*4) 运行结果: >>> new_array array([[0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25], [0. , 0. , 0. , 0. ], [0. , 0. , 0. , 0. ]]) 以上这篇Pytho

随机推荐