什么时候要额外创建递归函数, 什么时候不用?

来源:7-1 二叉树天然的递归结构

大菠萝101

2021-05-27

Bobo老师您好,

我在用递归解题或者看您的题解时, 经常有疑问, 什么情况下我们需要额外写一个递归函数方便解题, 什么情况下我们能直接调用题目本身的函数做递归呢?

e.g.:
额外写一个递归函数

def question(foo): 
	def helper(foo): # -> 创建一个新的递归函数
		...

直接调用函数本身

def question(foo): 
	if blah: 
		...
	res += question(fooo) # -> 复用原有递归函数

谢谢老师 !

写回答

1回答

liuyubobobo

2021-05-27

如果你创建的递归函数,其参数列表和返回值,和原问题的参数列表和返回值完全一致,就可以直接把题目本身的函数做成递归函数。


但是,永远把递归函数做为类中的私有方法,而在用户掉哦用的公有方法中去调私有的递归函数,肯定是没问题的,只不过在一些情况下可以不单独设立这个函数而已。这个单独的设计完全不影响算法的性能。所以,我通常都这样做。之后,如果认为需要做这个“优化”,可以再合并一下。此时本质只不过哦把刚才写的私有的递归函数名称改成题目要求的名称,并且 public 更好。


继续加油!:)

0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程