我正在尝试编写一个对数组或数字列表求和的递归程序。 使用 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/