【发布时间】:2014-07-06 23:33:48
【问题描述】:
您好,我正在学习递归,目前我有几个技巧问题需要剖析 - 这是递归函数之一
int rec(int niz[], int start, int end){
if (start == end)
{
return niz[start]; // vraca zadnji
}
int temp = rec(niz, start+1, end);
// control output
cout << "\n-----\n";
cout << "start " << start << endl;
cout << "niz[start] " << niz[start] << endl;
cout << "end " << end << endl;
cout << "temp " << temp << endl;
cout << "\n-----------------------------------------\n";
//contrl output end
return ((niz[start] < temp) ? niz[start] : temp);
}
我包含了一个 cout 块来控制呼叫中的工作。这是主要部分
int niz[] = {1,2,3,4,5,6,7};
cout << rec(niz, 0, 3);
这是我的输出:
-----
start 2
niz[start] 3
end 3
temp 4
------------------
-----
start 1
niz[start] 2
end 3
temp 3
------------------
-----
start 0
niz[start] 1
end 3
temp 2
------------------
1
谁能解释一下 temp 值是如何计算和返回的,以及我如何得到 1 作为这个函数的返回值?
提前谢谢你!
【问题讨论】: