【发布时间】:2017-05-20 02:03:18
【问题描述】:
好的,所以我正在准备我的 C 考试,但在递归方面我有点卡住了我需要找到最小元素的递归函数,例如:52873 将是 2,程序需要打印 2。
#include <stdio.h>
int min (int number, int element){
if (number==0)
return element;
if (element>number%10)
element=number%10;
min(number/10,element);
}
int main (){
int number;
while (scanf("%d",&number)){
printf("%d\n",min(number,9));
}
}
这是练习答案的代码,但我不明白它,并且很想了解为什么它会这样解决,因为我真的不明白它以及解决它的不同方法,谢谢提前这么多。
【问题讨论】:
-
抱歉吹毛求疵,但术语很重要。你的意思是找到一个数字中最小的digit。
-
查看编译器警告:ideone.com/CZ9Qf5
-
至于你的问题和你展示的代码,你可能不明白,因为它不起作用!你有一个函数,
min,它是声明返回一个值。但在某些情况下,它不返回值,导致未定义的行为。 -
min(number/10,element);应该是return min(number/10,element);。