使用递归函数查找最小值
Finding minimum with a recursive function
无论输入什么,结果总是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
您应该在打开警告的情况下进行编译。 rekursiv
并不总是 return 一个值。
改变
rekursiv( v, i + 1, n, min );
至
return rekursiv( v, i + 1, n, min );
在函数 (int rekursiv( int v[], int i, int n, int *min ) ) 中,必须是 return 整数,所以你的最后一个条件没有 return 任何东西。你应该检查最后一个条件 ELSE
else {
if( *min < v[ i ] ){
*min = v[ i ];
}//end if
rekursiv( v, i + 1, n, min );
}
无论输入什么,结果总是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
您应该在打开警告的情况下进行编译。 rekursiv
并不总是 return 一个值。
改变
rekursiv( v, i + 1, n, min );
至
return rekursiv( v, i + 1, n, min );
在函数 (int rekursiv( int v[], int i, int n, int *min ) ) 中,必须是 return 整数,所以你的最后一个条件没有 return 任何东西。你应该检查最后一个条件 ELSE
else {
if( *min < v[ i ] ){
*min = v[ i ];
}//end if
rekursiv( v, i + 1, n, min );
}