递归和非递归实现数组求和

原创 2012年03月25日 23:21:49
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
//定义结构体
typedef struct Array
{
    int data[100];
    int length;
}Array;
//非递归实现
int sum (Array);
//递归实现
int sumRecursive (int[], int);
int main(void)
{
    int i = 0;
    Array array;
    //输入长度
    printf("please enter array.length:\n");
    scanf("%d", &array.length);
    //输入各元素
    for (i = 1; i <= array.length; ++i)
    {
        printf("please enter data[%d]:\n", i);
        scanf("%d", &array.data[i]);
    }
    printf("%d\n", sum(array));
    printf("%d\n", sumRecursive(array.data, array.length));
    return 0;
}
int sum (Array array)
{
    int sum = 0;
    int i = 0;
    for (i = 1; i <= array.length; ++i)
    {
        sum += array.data[i];
    }
    return sum;
}
int sumRecursive (int array[], int length)
{
    if (0 == length)
    {
        return 0;
    }
    else
    {
        return array[length] + sumRecursive(array, length - 1);
    }
}

二叉树的非递归建立(一)

我们参照递归过程中栈的变化情况适用堆栈来解决 。首先将二叉树进行扩展 ,如下图所示 : 然后按先序遍历的顺序输入节点的信息 ,根据输入的信息设置一个标志位 flag, 并初始化为1。 flag =...
  • cyuyanenen
  • cyuyanenen
  • 2016年06月05日 16:15
  • 718

python数据结构与算法 20 递归和递归三定律

递归 本章目标 理解很多复杂问题,如果不用递归就很难解决,用递归也许非常简单 学会怎样进行递归编程 理解并应用递归三定律 理解递归也是一种迭代 建立一个问题的递归方法 理解递归在计算机系统...
  • ppabcde
  • ppabcde
  • 2014年03月24日 17:13
  • 2079

归并排序 递归版和非递归版的实现(java)

基于最近笔试遇到听多次 归并排序,今天做了如下总结(有递归版和非递归版的) 实现思路:将待排序的序列分为若干个,每次两两合并,然后再把有序子序列合并为整体有序序列。 递归排序合并的思路 1)初始化...
  • gdutxiaoxu
  • gdutxiaoxu
  • 2016年05月01日 22:57
  • 1583

非递归线段树区间修改区间求和的两种实现(以POJ 3468为例)

非递归线段树实现区间修改区间求和的两种方法(以 POJ 3468 为例)
  • u012891242
  • u012891242
  • 2015年04月07日 08:37
  • 1496

二叉树的递归与非递归实现

二叉树的递归实现: #include using namespace std; #define LEN sizeof(struct Tree) struct Tree { int key; ...
  • z84616995z
  • z84616995z
  • 2014年03月09日 18:33
  • 1452

利用递归实现1到100以内的求和

一、什么叫做递归?
  • he315889714
  • he315889714
  • 2014年11月04日 13:19
  • 19652

图的遍历递归和非递归实现

因为深度优先需要无路可走时按照来路往回退,正好是后进先出广度优先则需要保证先访问顶点的未访问邻接点先访问,恰好就是先进先出 广度不能用递归  图的广度优先搜索确实没法使用递归,但上面那句话也确实是理...
  • judyge
  • judyge
  • 2015年04月12日 12:04
  • 566

深度优先DFS和广度优先BFS的非递归实现

void DFS(Node root) //非递归实现 { stack s; root.visited = true; printf("%d ", root.val); ...
  • HUSTLX
  • HUSTLX
  • 2016年08月09日 16:32
  • 1621

java堆排序非递归代码,无原理版,比较好理解

public class HeapOperate { /* * 建立堆时只需要保证根结点小于两个子结点或者大于两个子结点,对两个子结点大小没有要求 */ public static vo...
  • zhuqiuhui
  • zhuqiuhui
  • 2016年04月21日 23:01
  • 754

python模拟栈的操作实现非递归方式的快速排序算法

今天在做题的时候突然想到一个问题,递归写出来的算法是否可以改成非递归的形式,查了一些资料发现:网上很多都说只要是递归可以写成的程序都是可以改成非递归形式的,关于递归的算法有很多的说法 递归的优点: ...
  • Together_CZ
  • Together_CZ
  • 2017年07月27日 14:19
  • 820
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:递归和非递归实现数组求和
举报原因:
原因补充:

(最多只允许输入30个字)