【发布时间】:2012-03-26 20:38:34
【问题描述】:
我编写了一个代码,用于计算随机填充 0 到 1 之间值的数组的组件总和。我必须编写两个函数,一个是迭代的,另一个是递归的。两者都应该做同样的工作。当我一次只调用一个时,我编写的两个函数运行良好。但是,如果我尝试在主函数中调用这两个函数,我只能看到一个的结果,而看不到另一个的结果。此外,我的递归函数往往会被调用一次。我注意到如果我将 getch() 作为注释放在 recursive_function() 中。我知道我错过了一些东西,但我无法弄清楚。谢谢你的帮助。这是代码。我正在使用 Dev-C++。
#include <iostream>
#include<conio.h>
#include <stdlib.h>
using namespace std;
//headers of the thre functions
int random_value(int array[], int size);
int iterative_function (int array[], int size, int sum);
int recursive_function ( int size, int array[], int index, int sum);
int main()
{
int size;int array[size]; int sum=0;
int index=0;
cout<<"enter the size of the array"<<endl;
cin>>size; //enter the size ofthe array...
random_value(array, size);
iterative_function (array, size, sum);
recursive_function ( size, array, index, sum);
getch();
return 0;
}
int random_value(int array[], int size)
{ cout<<"here is the value returned by rand()"<<endl;
for(int i=0;i<size;i++)
{ array[i]=( rand() % (0-2));
cout<<array[i]<<endl;
}
}
int iterative_function (int array[], int size, int sum)
{
int i,j, number, value; i=0;
cout<<"from the iterative function"<<endl;
cout<<"------"<<endl;
for(i=0;i<size;i++)
sum=sum+array[i];
cout<<"sum of the array="<<sum<<endl;
getch();
return 0; //exit the function. Program terminated succesfully.
}
int recursive_function ( int size, int array[], int index, int sum)
{
if(size>index)
{
sum=sum+array[index];
index++;
recursive_function( size, array, index, sum);
}
cout<<"from the recursive function"<<endl;
cout<<"------"<<endl;
cout<<"new sum= "<< sum<<endl;
getch();
return 0;
}
【问题讨论】:
-
请注意:您忘记在调用两个函数之间将
sum变量重置为零。 -
注意:调试器/跟踪是你的朋友...
-
@KarolyHorvath 注意:单元测试是你的朋友。
-
我将 sum 变量重置为零,现在,我可以得到每个函数的结果。谢谢约阿希姆。
-
@Karoly / Peter -
想成为你的朋友。接受?是/否(抱歉,无法抗拒)
标签: c++ function recursion iteration