我正在尝试编写一个递归函数,它接受一个整数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
顺便说一下这不是作业:)
答案 0 :(得分:8)
在递归的“向下”路上打印偶数,并在“返回”的路上打印每个数字,每次减少1。在print语句后使用,
跟随数字后面的空格而不是换行符。不要返回值,也不要打印返回的值。
def kaboom(n):
if (n % 2) == 0: print n,
if n == 0: return # we "hit bottom"
kaboom(n-1) # make the recursive call
# From this point on, we are "on the way back", and print each value.
print n,
答案 1 :(得分:2)
def kaboom(n):
if n >= 0:
if n%2 == 0:
print n,
kaboom (n-1)
if n > 0:
print n,
测试:
>>> kaboom(4)
4 2 0 1 2 3 4
>>> kaboom(5)
4 2 0 1 2 3 4 5
答案 2 :(得分:1)
这是itertools的方法。 没有递归:
from itertools import chain, imap
def even_down_all_up(x):
return ' '.join(imap(str, chain(xrange(x-1 if x%2 else x, 0, -1), xrange(0, x+1))))
print even_down_all_up(5)
4 2 0 1 2 3 4 5
print even_down_all_up(4)
4 2 0 1 2 3 4
仅迭代器版本返回字符串:
from itertools import chain, imap
def even_down_all_up(x):
return imap(str, chain(xrange(x-1 if x%2 else x, 0, -1), xrange(0, x+1)))
print list(even_down_all_up(5))
['4', '2', '0', '1', '2', '3', '4', '5']
print tuple(even_down_all_up(4))
('4', '2', '0', '1', '2', '3', '4')
Iterator版本返回ints
from itertools import chain, imap
def even_down_all_up(x):
return chain(xrange(x-1 if x%2 else x, 0, -1), xrange(0, x+1))
print tuple(even_down_all_up(4))
(4, 2, 0, 1, 2, 3, 4)
注意:我喜欢stackoverflow给我一些问题来应用itertools。 :) 编辑:添加了int返回版本。
答案 3 :(得分:-2)
我认为你需要2个递归函数(在VB.Net中,因为我不知道python):
Function AllNumbers(ByVal n As Integer) As String
If n > 0 Then
Return AllNumbers(n - 1) & " " & n
Else
Return ""
End If
End Function
Function EvenNumbers(ByVal n As Integer) As String
If n > 0 Then
If n Mod 2 = 0 Then
Return n.ToString & " " & EvenNumbers(n - 2)
Else
Return EvenNumbers(n - 1)
End If
Else
Return "0"
End If
End Function
Function Kaboom(ByVal n As Integer) As String
Return EvenNumbers(n) & AllNumbers(n)
End Function