几个递归练习

1.反向输出字符串
1void stringReverse( char array[] )
2{
3    if ( array[0== '\0' )
4        return;
5    stringReverse( array + 1 );
6    printf( "%c", array[0] );
7}

2.输出数组
1void printArray( int array[], int size )
2{
3    if( size == 0 )
4        return;
5    printf( "%d ", array[0] );
6    printArray( ++array, --size );
7}

3.查找数组中的最小值
 1int recursiveMinimum( int array[], int size )
 2{
 3    if ( size == 1 )
 4        return array[0];
 5
 6    if ( array[ size - 1 ] < recursiveMinimum( array, size-1 ) )
 7        return array[ size - 1 ];
 8    else
 9        return recursiveMinimum( array, size-1 );
10}

4.选择排序
选择排序:从数组中查找最小的值,将其同数组中的第一个元素交换,然后从第二个元素开始查找最小的值同数组第二个元素交换,这样重复一直到只剩最后一个元素为止。
 1void selectionSort( int list[], int n, int start)
 2{
 3    {   
 4        int i;   
 5        int p = start;   
 6        if ( start < n - 1 )   
 7        {       
 8            for ( i = start; i < n; i++ )   
 9            {
10                if ( list[i] < list[p] )   
11                    p = i;  
12            }

13            i = list[ p ];   
14            list [ p ] = list[ start ];   
15            list[ start ] = i;   
16            selectionSort( list , n , start+1 );   
17        }
   
18    }
   
19}
5.线性查找
 1int linerSearch(int a[], int key, int size)
 2{  
 3    if ( size > 0 )  
 4    {  
 5        if ( a[ size - 1 ] == key )
 6            return  size - 1//反方向,返回下标  
 7        return linerSearch( a, key, size - 1 );  
 8    }
    
 9    
10    return -1//未找到  
11}
 
原文地址:https://www.cnblogs.com/iPeterRex/p/1259149.html