递归函数
我正在尝试编写一个递归函数,它接受一个整数 n,并将所有偶数赋予零,然后将每个数字赋予 n...
这就是我迄今为止所拥有的
def kaboom(n):
if n>=0:
if n%2==0:
print n,
print kaboom(n-2),
else:
n=n-1
print n,
print kaboom(n-2),
print n,
n=n+1
return n
输出是
kaboom(5)
4 2 0 None 0 1 2 3 4
5
kaboom(4)
4 2 0 None 0 1 2 3 4
5
但它应该是
kaboom(5)
4 2 0 1 2 3 4 5
和
kaboom(4)
4 2 0 1 2 3 4
顺便说一句,这不是家庭作业 :)
I'm trying to write a recursive function which take an integer ,n, and give all the even number to zero and then every number to n...
this is what I have so far
def kaboom(n):
if n>=0:
if n%2==0:
print n,
print kaboom(n-2),
else:
n=n-1
print n,
print kaboom(n-2),
print n,
n=n+1
return n
the output is
kaboom(5)
4 2 0 None 0 1 2 3 4
5
kaboom(4)
4 2 0 None 0 1 2 3 4
5
but it should be
kaboom(5)
4 2 0 1 2 3 4 5
and
kaboom(4)
4 2 0 1 2 3 4
and by the way this is not homework :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我认为你需要 2 个递归函数(在 VB.Net 中,因为我不知道 python):
I think you need 2 recursive functions (in VB.Net because I don't know python) :
通过递归在“向下”的路上打印偶数,在“向后”的路上打印每个数字,每次减1。在 print 语句后使用
,
可以在数字后跟一个空格而不是换行符。不返回值也不打印返回值。Print the even numbers on the way "down" through the recursion, and print each number on the way "back", reducing by 1 each time. Use
,
after the print statement to follow the number with a space instead of a newline. Don't return a value and don't print a returned value.测试:
Test:
这是 itertools 的方法。
无递归:
仅迭代器版本返回字符串:
迭代器版本返回整数
注意:我喜欢 stackoverflow,因为它给了我将 itertools 应用于 . :)
编辑:添加 int 返回版本。
Here is the itertools way to do it.
No recursion:
Iterator only version returning strings:
Iterator version returning ints
NOTE: I love stackoverflow for giving me questions to apply itertools to . :)
EDIT: Added int returning version.