python 用递归方式列表 输出小于N的所有偶数
答案:2 悬赏:10 手机版
解决时间 2021-03-19 20:32
- 提问者网友:佞臣
- 2021-03-19 11:02
python 用递归方式列表 输出小于N的所有偶数
最佳答案
- 五星知识达人网友:杯酒困英雄
- 2021-03-19 11:52
def check(x):
return (x < N and x % 2 == 0)
def func_A(lst, check):
if len(lst):
if check(lst[0]):
print lst[0]
func_A(lst[1:], check)
else:
return追问if len(lst):
if check(lst[0]):
print lst[0]
是什么意思 为什么要长度追答判断空数组时退出。这道题的核心就在于让你了解怎么递归
-- 递归一定要有退出逻辑的
之前的理解似乎不对你的题目
def evens(n):
n -= (n % 2) and 1 or 2
if n <= 0:
return
print n
evens(n)追问谢谢,那我写的那个思路是哪里出问题了?为什么加上奇数的判断就一直提示nonetype追答
def evens(n):
if n > 2 and n % 2:
return evens(n-1) # 奇数入口从n-1开始
elif n>=2:
return evens(n-2) + [n]
else:
return []
return (x < N and x % 2 == 0)
def func_A(lst, check):
if len(lst):
if check(lst[0]):
print lst[0]
func_A(lst[1:], check)
else:
return追问if len(lst):
if check(lst[0]):
print lst[0]
是什么意思 为什么要长度追答判断空数组时退出。这道题的核心就在于让你了解怎么递归
-- 递归一定要有退出逻辑的
之前的理解似乎不对你的题目
def evens(n):
n -= (n % 2) and 1 or 2
if n <= 0:
return
print n
evens(n)追问谢谢,那我写的那个思路是哪里出问题了?为什么加上奇数的判断就一直提示nonetype追答
def evens(n):
if n > 2 and n % 2:
return evens(n-1) # 奇数入口从n-1开始
elif n>=2:
return evens(n-2) + [n]
else:
return []
全部回答
- 1楼网友:摆渡翁
- 2021-03-19 12:40
这种问题不明白为什么要用递归来做, Python中的递归如果不做特殊处理, 你这输入的数字大一点就会抛异常.
import sysclass TailRecurseException:
def __init__(self, args, kwargs):
self.args = args
self.kwargs = kwargs
def tail_call_optimized(g):
def func(*args, **kwargs):
f = sys._getframe()
if f.f_back and f.f_back.f_back and f.f_back.f_back.f_code == f.f_code:
raise TailRecurseException(args, kwargs)
else:
while 1:
try:
return g(*args, **kwargs)
except TailRecurseException, e:
args = e.args
kwargs = e.kwargs
func.__doc__ = g.__doc__
return func
@tail_call_optimized
def fun(n):
if n == 2:
sys.stdout.write(' ')
return
elif n % 2 == 1:
n = n - 1
else:
n = n - 2
sys.stdout.write('{} '.format(n))
fun(n)
N = int(sys.stdin.readline())
fun(N)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯