【发布时间】:2016-06-14 02:50:09
【问题描述】:
我不太明白这段代码。因此,例如 n = 5 我们有:
array[5] = {13, 27, 78, 42, 69}
有人能解释一下吗?
我的理解是如果n = 1,那是最低的。
但是当n = 5时,我们会得到第4个索引并将其与第4个索引进行比较并检查哪个是最小的并返回最小的,然后将第4个索引与第3个索引进行比较并检查哪个是最小的并且返回最小的?我很困惑。
int min(int a, int b)
{
return (a < b) ? a: b;
}
// Recursively find the minimum element in an array, n is the length of the
// array, which you assume is at least 1.
int find_min(int *array, int n)
{
if(n == 1)
return array[0];
return min(array[n - 1], find_min(array, n - 1));
}
【问题讨论】:
-
这是一个递归调用,find_min 递归调用在您到达数组底部之前不会返回。写出调用跟踪,你就会看到发生了什么。
标签: recursion