递归函数输出数组的最小数
recursive function to outputs the minimum number of the array
我被要求创建一个递归函数,输出用户输入的数组的最小数量。问题是当运行代码时输出很有趣并且 cout 以奇怪的值重复了很多次。
#include <iostream>
using namespace std;
void recursiveMinimum(int i, int f, int *a, int min)
{
if(a[i]<min)
{
min=a[i];
}
i++;
if (i<f)
{
recursiveMinimum(i, f, a, min);
}
cout<<"the minimum number is "<<min<<endl;
}
void main ()
{
int *a, b=1000, f;
a= new int [b];
cout<<"please enter the array, enter '1000' without the quotes to stop"<<endl;
for(int i=0; i<b; i++)
{
cin>>a[i];
if (a[i]==1000)
{
a[i]=NULL;
f=i;
break;
}
}
recursiveMinimum(0, f, a, a[0]);
system("pause");
}
我不太了解C++,但是cout 不是被调用了很多次,特别是每次调用递归函数时吗?这是更新后的 recursiveMinimum 函数:
void recursiveMinimum(int i, int f, int *a, int min)
{
if(a[i]<min)
{
min=a[i];
}
i++;
if (i<f)
{
recursiveMinimum(i, f, a, min);
} else {
cout<<"the minimum number is "<<min<<endl;
return;
}
}
我将 print 语句移到了 else 语句中。当 I 不小于 F 时,这应该只发生在你到达数组末尾时,程序将打印最小数字并结束。
我被要求创建一个递归函数,输出用户输入的数组的最小数量。问题是当运行代码时输出很有趣并且 cout 以奇怪的值重复了很多次。
#include <iostream>
using namespace std;
void recursiveMinimum(int i, int f, int *a, int min)
{
if(a[i]<min)
{
min=a[i];
}
i++;
if (i<f)
{
recursiveMinimum(i, f, a, min);
}
cout<<"the minimum number is "<<min<<endl;
}
void main ()
{
int *a, b=1000, f;
a= new int [b];
cout<<"please enter the array, enter '1000' without the quotes to stop"<<endl;
for(int i=0; i<b; i++)
{
cin>>a[i];
if (a[i]==1000)
{
a[i]=NULL;
f=i;
break;
}
}
recursiveMinimum(0, f, a, a[0]);
system("pause");
}
我不太了解C++,但是cout 不是被调用了很多次,特别是每次调用递归函数时吗?这是更新后的 recursiveMinimum 函数:
void recursiveMinimum(int i, int f, int *a, int min)
{
if(a[i]<min)
{
min=a[i];
}
i++;
if (i<f)
{
recursiveMinimum(i, f, a, min);
} else {
cout<<"the minimum number is "<<min<<endl;
return;
}
}
我将 print 语句移到了 else 语句中。当 I 不小于 F 时,这应该只发生在你到达数组末尾时,程序将打印最小数字并结束。