python 用递归方式列表 输出小于N的所有偶数

2025-03-21 05:16:23
推荐回答(2个)
回答1:

这种问题不明白为什么要用递归来做, Python中的递归如果不做特殊处理, 你这输入的数字大一点就会抛异常.

import sys
class 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('\n')
        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)

回答2:

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