これが一般的な質問である場合は申し訳ありませんが、私はPythonの初心者であり、他の人が再帰を使用してコーディングしているのを見ると、メイン関数のヘルパー関数を作成し、それ自体が再帰的なヘルパー関数を呼び出します。
これは、たとえば、関数が自分自身のみを呼び出す最も単純な再帰のケース (リストの合計、階乗) とは少し異なるようです。
おそらく例を使って、誰かがこの手法をより注意深く説明できますか?
とても有難い。
例 1: (再帰を使用してリンクされたリストを逆にする)
def revert_list(self):
self.head = self._revert_helper(self.head)
def _revert_helper(self, node):
temp = None
if node.forward == None:
return node
else:
temp = self._revert_helper(node.forward)
node.forward.forward = node
node.forward = None
return temp
例 2: (二分探索木)
def __contains__(self, key):
return self._bstSearch(self._root, key)
# Returns the value associated with the key.
def valueOf(self, key):
node = self._bstSearch(self._root, key)
assert node is not None, "Invalid may key."
return node.value
# Helper method that recursively searches the tree for a target key:
# returns a reference to the Node. This allows
# us to use the same helper method to implement
# both the contains and valueOf() methods of the Map class.
def _bstSearch(self, subtree, target):
if subtree is None: # base case
return None
elif target < subtree.key: # target is left of the subtree root
return self._bstSearch(subtree.left)
elif target > subtree.key: # target is right of the subtree root
return self.bstSearch(subtree.right)
else: # base case
return subtree