找出数组中的最小值--递归实现

#include <iostream> 
#include <iomanip> 
#include <cstdlib>
#include <ctime>
using namespace std;

const int MAXRANGE = 1000;
int recursiveMinimum( const int [], int, int );

int main()
{
   const int SIZE = 10;
   int array[ SIZE ];
   int smallest;

   srand( time( 0 ) );

   // 使用随机数初始化
   for ( int loop = 0; loop < SIZE; loop++ )
      array[ loop ] = 1 + rand() % MAXRANGE;

   cout << "Array members are:\n";

   for ( int k = 0; k < SIZE; k++ )
      cout << setw( 5 ) << array[ k ];

   cout << '\n';
   smallest = recursiveMinimum( array, 0, SIZE - 1 );
   cout << "\nSmallest element is: " << smallest << endl;
   system("pause");
   return 0;
} 

int recursiveMinimum( const int array[], int low, int high )
{
   static int smallest = MAXRANGE;

   // 当数组“第一个”元素值比当前最小值还小时,交换
   if ( array[ low ] < smallest )
      smallest = array[ low ];

   // 如果只有一个值,返回最小值,否则,递归
   return low == high ? 
      smallest : recursiveMinimum( array, low + 1, high );
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值