好吧,我正在准备我的 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));
}
}
这是练习答案的代码,但我不理解它,并且很想了解为什么会这样解决它,因为我不太理解它以及解决它的不同方法,谢谢提前了这么多。
最佳答案
该程序的想法如下:
当你将一个数字除以 10 时,你会得到最后一位数字,例如:
16%10 = 6;
6%10 = 6;
536%10 = 6;
当您将一个数字除以 10 时,您将取出该数字的最后一位数字,例如:
16/10 = 1;
6/10 = 0; (6 = 06)
536/10 = 53;
因此,递归答案的想法是将最小的数字保存在“element”中,并通过将数字除以 10 (/) 并执行模 (%) 来递归分析每个数字。
但是,我认为你的解决方案有问题,如果我的号码是 0,你将返回 9 作为答案。
关于c - 如何使用递归查找数字中的最小元素 [C],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41486547/