0

私は試験の練習をしていて、これを理解しようとしています。私はaddメソッドをどうするか正確にはわかりません。これは私がこれまでに持っているものです:

class recursion:
    def __init__(self, lst=[]):
        self.lst = lst

    def add(self, x, y):
        return x + y

    def recurs(self):
        if len(self.lst) == 1:
            return lst[0]
        else:
            return self.lst[0].add(self.recurs(lst[1:])
4

3 に答える 3

4

リストの合計を再帰的に取得しようとしていると仮定します。

基本的に、recursive_sum_helperより小さなリストで自分自身を呼び出し続けます:

合計(1, 2, 3, 4) = 1+合計(2,3,4) = 1+( 2 + 合計(3,4) ) = ...

class recursive_summer:
    def __init__(self, lst=[]):
        self.lst = lst
    def recursive_sum(self):
        return self.recursive_sum_helper(self.lst)
    def recursive_sum_helper(self, a_lst):
        if len(a_lst) == 1:
            return a_lst[0]
        else:
            first_element = a_lst[0]
            list_without_first_element = a_lst[1:]
            return first_element + self.recursive_sum_helper( list_without_first_element )

r = recursive_summer([1,2,3,4])
r.recursive_sum()

出力は 10 です。

これが、解決しようとしている問題に役立つことを願っています。

于 2012-05-11T06:05:09.440 に答える
1

これは再帰的な方法ですが、よりクリーンです。

リストからpopメソッドを使用します

class rec(object):
    def __init__(self):
        self.sum = 0

    def recur(self, list):
        if len(list) > 0:
            self.sum += list.pop()
            self.recur(list)
        else:
            return self.sum

使用:

>>> from code import rec
>>> a = rec()
>>> b = [1,2,3]
>>> print a.recur(b)
6
于 2012-05-11T07:05:34.583 に答える
0

再帰なしでリストの合計を取得する別の方法ですが、より高速で効果的です。

>>> a = [1,2,3]
>>> sum(a)
6
>>>
于 2012-05-11T06:12:39.753 に答える