Tag: 分而治之

理解双递归

如果函数中只有一个递归调用,我就能轻松理解递归。 但是,当我在同一个函数中看到两个或多个递归调用时,我真的很困惑。 例: int MaximumElement(int array[], int index, int n) { int maxval1, maxval2; if ( n==1 ) return array[index]; maxval1 = MaximumElement(array, index, n/2); maxval2 = MaximumElement(array, index+(n/2), n-(n/2)); if (maxval1 > maxval2) return maxval1; else return maxval2; } 我理解在每次递归调用期间n减少一半的事情。 我只是不明白下一个递归调用是如何工作的。 它变得混乱和我的理解,直到那一点崩溃,我放弃了。 如果有人可以用一个简洁的例子手动说明这一点,我将非常感激。 我已经完成了编程,并打印了输出。 但是,我不明白这项工作背后的计算方式。 这是我的理解,直到一切都变得一无所获: int a [] = {1,2,10,15,16,4,8} 初始调用:MaximumElement(a,0,7) 该函数开始:第一次调用:MaximumElement(a,0,7 / […]