Q1:创建一个评估4n
的递归Python函数这就是我所拥有的
def multiply(n):
if n == 1:
return 1
else:
return 4*n*multiply(n-1)
Q2:写一个递归的Python函数,它返回前n个整数的总和
这就是我的......
def sum_n(n):
if n == 0:
return 0
else:
return n + sum_n(n-1)
只是想知道我的代码是否正确?
答案 0 :(得分:3)
您的multiply
可以修复一些小修改
def multiply(n):
if n == 0:
return 0
else:
return 4 + multiply(n - 1)
请注意,它现在与您的sum_n
相同,只有一个n
已被常量4
替换
修改强>
这个版本的问题是什么?
def multiply(n):
if n == 1:
return 1
else:
return 4*n*multiply(n-1)
考虑终止案例(n == 1),您必须像我一样制作此return 4
或使用n==0
和return 0
。
选择n==1
作为终止案例也意味着multiply(0)
失败。
我无法猜测你在这条回归路径中的想法
return 4*n*multiply(n-1)
通过传递n-1,它确实将递归调用移向终止情况(只要n是正整数),但您应该只是将4添加到返回结果中。考虑:
multiply(4) == 4 + multiply(3) == 4 + 4 + multiply(2) == 4 + 4 + 4 + multiply(1)
<强> EDIT2:强>
有些人(至少有一个人)抱怨说这对负整数不起作用。这可以通过添加一个简单地将n
翻转回正整数的条件来处理。
def multiply(n):
if n == 0:
return 0
elif n < 0:
return -multiply(-n)
else:
return 4 + multiply(n - 1)
答案 1 :(得分:0)
您可以通过在可以运行它的地方输入代码来查明代码是否正确(例如http://www.tutorialspoint.com/execute_python_online.php或通过在线询问google python ide找到的许多其他代码。)。
然后运行代码并尝试不同的值。
这是编码的重要一步,测试具有不同可能性的代码。不能像你在网站上提出的那样问一个问题。你可以尝试一个问题并发现一个错误,你无法弄清楚如何解决(但请确保你展示你尝试过的东西)。
但是这次实际回答你的问题,EDIT-FROM:在使用python EDIT-TO时,两者都没有按照问题格式化工作:他们现在编译,我看到你发现错误并改变了很高兴看到(没有进一步测试)EDIT-END。没试过Python3。