Recursion 需要帮助查找示例/说明吗
通过一些练习,我的书对说明解决方案没有多大帮助。有谁能给我指出正确的方向,或者帮我分析一下这里发生了什么 需要递归函数来建模: 当n%2=0时,T(n)=n 当n%2=1时,T(n)=2+T(n-1) 谢谢 下面是一段python代码:Recursion 需要帮助查找示例/说明吗,recursion,Recursion,通过一些练习,我的书对说明解决方案没有多大帮助。有谁能给我指出正确的方向,或者帮我分析一下这里发生了什么 需要递归函数来建模: 当n%2=0时,T(n)=n 当n%2=1时,T(n)=2+T(n-1) 谢谢 下面是一段python代码: function T(n) { if(n%2 == 0) return n; else if(n%2 == 1) return 2 + T(n-1); } So lets say you use 3, th
function T(n)
{
if(n%2 == 0)
return n;
else if(n%2 == 1)
return 2 + T(n-1);
}
So lets say you use 3, then the function enters check 3%2 that's not 0 so it pases to the else
which now has 3/2 and that returns the following:
function T(3)
{
if(n%2 == 0)
return n;
else if(n%2 == 1)
return 2 + T(n-1); // T(3-1) = T(2)
}
This here would be equivalent to calling the same function
but now with a 2 instead of a 3 and the return statement would then be added to the
original 2 and so on, I hope I explained a bit.
function T(2)
{
if(n%2 == 0)
return n;
else if(n%2 == 1)
return 2 + T(n-1);
}
def rec(n):
if n%2 == 0:
return n;
else: # if n%2 == 1
return 2 + rec(n-1)
print(rec(9)) # 10
print(rec(10)) # 10
print(rec(11)) # 12
print(rec(12)) # 12
但问题在哪里?顺便说一下,它不是真正的递归函数,因为函数被“递归地”最多调用一次 您的示例不适合递归,因为当
n
为偶数时,它只返回n
,当n为奇数时,它只返回n+1
。最好的递归示例是找到一个数字的阶乘。alvits-谢谢或洞察。我将对此进行研究。T(n)
通常用于表示函数处理大小问题的时间量n
。你确定你没有误解这本书及其练习的要求吗?看似简单。谢谢你的帮助!我需要更多的例子-递归仍然有点让我费解。+1是为了给出一个简单易懂的解释。+1这正是我在对OP的评论中提到的。当n
为偶数时,它返回n
,当n
为奇数时,它返回n+1
。但对于初学者来说,给出一个简单的例子是一个很好的开始。我很困惑,所以我很高兴你们中的一些人发现了这个例子的问题。我将在堆栈溢出上花费更多的时间来补充我的研究。再次感谢!