假设这个随机码是类似于工作的技术我很关心这样一个问题:递归迭代返回等价吗?
int randomNumber(int n) {
if (n <= 0)
return 3;
int c1 = 1+randomNumber(n-2);
int c2 = 2 + randomNumber(n-1);
return c1 + c2;
}
我想将其转换为迭代形式,每次调用相当于推的东西明确的堆栈,但是每一个返回语句都会返回给调用者,这相当于什么?我想在每次调用后将位置保存在堆栈中,并在返回语句后再次返回,但这似乎是不可能的。
编辑:让自己更加明确,认为这更复杂随便举个例子:
int pal(string s, int i) {
if (i > s.length()/2) {
return 0;
}
string s1 = s, s2 = s;
int c1, c2;
if (s1[i] == s1[i + 1]) {
s1.insert(i + 1, "a");
c1 = 1 + pal(s1, i + 1);
}
else {
c1 = pal(s1, i + 1);
}
if (s2[i] == s2[i + 2]) {
s2.insert(i + 2, "b");
c2 = 1 + pal(s2, i + 1);
}
else {
c2 = pal(s2, i + 1);
}
return c1 > c2 ? c1 : c2;
}
我不认为这将是由相同的简单
EDIT2转换为迭代形式:我的问题原来是因为我想前面的最后一个例子,我想尽量减少其对大串时间(不占永来计算大串的结果的程序像以前的一个)
尽量减少这样的功能的时候,例如
我想你应该学习动态规划。 – MikeCAT