使用递归函数找到最小值
Posted
技术标签:
【中文标题】使用递归函数找到最小值【英文标题】:Finding minimum with a recursive function 【发布时间】:2015-09-03 18:34:05 【问题描述】:无论输入什么,结果始终为 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
【问题讨论】:
也许你应该包含一个简短的代码描述#include stdio.h #include conio.h
? <>
去哪儿了?
为什么要递归?这是矫枉过正。
因为这是家庭作业:D
【参考方案1】:
您应该在打开警告的情况下进行编译。 rekursiv
并不总是返回值。
改变
rekursiv( v, i + 1, n, min );
到
return rekursiv( v, i + 1, n, min );
【讨论】:
我很确定 msvc 和 gcc 都会在默认设置下给出警告。我会假设他只是没有阅读它们,因为每个人都知道警告是正常的。【参考方案2】:在函数 (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 );
【讨论】:
以上是关于使用递归函数找到最小值的主要内容,如果未能解决你的问题,请参考以下文章