递归函数输出最小数量的数组

时间:2015-01-09 01:42:23

标签: c++ recursion

我被要求创建一个递归函数,输出用户输入的最小数组。问题是当运行代码时输出很有趣并且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");
     }

1 个答案:

答案 0 :(得分:0)

我不太了解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语句中。当我不小于F时,只有当你到达数组的末尾才会发生,程序将打印最小数字并结束。