c++ - 求和数字递归C++

标签 c++ arrays recursion

我正在尝试编写一个对数组或数字列表求和的递归程序。 使用 visual studio 2013,C++ 控制台应用程序。

我的第一个问题是: 现在我知道我有多少个数字,我知道我的数组的大小。我怎样才能以事先不知道数字的方式对其进行编程,比如在计算数字时仍有新数字相加,占用空间最少?

我的第二个问题是: 我怎样才能改进仍然递归工作的程序并且它的时间和空间使用是最佳的?

这是我的代码:

// summing a list of number.cpp
#include "stdafx.h"
#include "iostream"
int array[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int sum = 0, i = 0;
int sumarray(int i){
    if (i < 9){
        sum += array[i];
        i++;
        sumarray(i);
    }
    else
        return sum;
}
int main(){
    std::cout << "sum is ::: " << sumarray(i);
    getchar();
}

最佳答案

我希望您停止编写依赖于全局变量的函数,因为它们可以很容易地只根据提供的输入工作。

这是一个适合我的版本。

#include <iostream>

int sumarray(int array[], int i)
{
   if ( i <= 0 )
   {
      return 0;
   }

   return sumarray(array, i-1) + array[i-1];
}

int main()
{
   int array[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
   std::cout << "sum is : " << sumarray(array, 0) << std::endl;
   std::cout << "sum is : " << sumarray(array, 5) << std::endl;
   std::cout << "sum is : " << sumarray(array, 10) << std::endl;
}

输出:

sum is : 0
sum is : 15
sum is : 55

关于c++ - 求和数字递归C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28177170/

相关文章:

c - C中变量定义长度的数组如何存储在内存中?

recursion - 超出堆栈限制 (0.2Gb)...可能无限递归(循环):

c++ - 如何使这个函数递归

c++ - 调试时不能不进入功能

c++ - 混合来自不同 C++ 编译器的库

php - 使用 PHP 将数组传递给 Ajax

Python .extend 不必要地拆分字符

c++ - 如何在wxRadioBox中添加滚动条?

c++ - 关于调度程序代码

计数并以二进制形式打印输入的整数