使用递归函数查找最小值

时间:2015-06-18 08:16:36

标签: c recursion minimum

无论输入是什么,结果始终为0。 这是为什么 ?

#include <stdio.h>
#include <conio.h>

int rekursiv( int v[], int i, int n, int *min );

int main( void )
{
    int v[ 100 ];
    int n, i, min;

    printf( "Shkruanni n: " );
    scanf( "%d", &n );
    printf( "Shkruani elementet e vektorit.\n" );
    for( i = 0; i < n; i++ ){
         scanf( "%d", &v[ i ] );

         }//end for
    min = v[ 0 ];
    i = 1;
    printf( "Minimumi eshte %d.", rekursiv( v, i, n, &min ) );

    getche();
    return 0;
}//end main

int rekursiv( int v[], int i, int n, int *min )
{
    if( i == n - 1 ) {
        return *min;
    }//end if
    else {
        if( *min < v[ i ] ) {
            *min = v[ i ];
        }//end if
        rekursiv( v, i + 1, n, min );
    }//end else

}//end rekursiv

2 个答案:

答案 0 :(得分:6)

您应该在打开警告的情况下进行编译。 rekursiv并不总是返回值。

更改

rekursiv( v, i + 1, n, min );

return rekursiv( v, i + 1, n, min );

答案 1 :(得分:0)

在函数( int rekursiv(int v [],int i,int n,int * min))中,必须返回整数,以便最后一个条件不返回任何内容。您应该检查上一个条件 ELSE

else {
         if( *min < v[ i ] ){
             *min = v[ i ];

             }//end if
         rekursiv( v, i + 1, n, min );

         }