首页 > 编程知识 正文

python递归程序的特点,python中递归函数写法

时间:2023-05-05 07:58:33 阅读:22516 作者:279

前言:

递归是计算机科学中出现得非常多的概念,用递归解决问题有时显得非常简单优雅。 建议查看《算法图解》第三章递归。 举个例子很容易理解

递归是什么? 递归用一般的语言来说是自己调用自己,但是需要分解那个参数来解决更无限的定位点问题。 问题小到一定规模时,需要递归出口。 这里举一个和很多其他旧教科书一样喜欢的例子。 阶乘函数,阶乘函数,我觉得用它来演示更直观。 他的定义是:

我们很容易根据那个定义写这样的递归函数。 因为它本身是递归定义的。

1 .递归必须包含基本出口(base case )。 如果不包含,它将是无限递归的,最终导致堆栈溢出。 例如,这里以n==0返回12。 递归必须包含可分解问题(recursive case )。 要求出fact(n ) n,必须使用n * fact (n-1 ) 3。 递归必须接近递归出口(toward the base case ),其中每次递归调用时n

正常递归尾递归

实例代码块----coding : utf-8-----fromcollectionsimportdequedeffact (n ) : IFN==03: return1else 3360 rete fact defprint(n_run_recursive(n ) : IFN 03360 print _ run _ recursive (n-1 ) print ) classstack ) object ) value ) : return self._ deque.append (value ) defpop ) self ) : return self._deque.pop ) defis_empty ) see que 60 s=堆栈) while n0:s.push(n ) n-=1 while not s.is_empty ) (: s ) ) n )=1whilenots.is ) empty

我们把它转换成代码

defHaoni_move(n,source,dest,intermediate ) :ifn=1:Haoni_move(n-1,source,intermediate,dest ) dest () ) haoni_move(3(n-1,intermediate,dest,source ) Haoni_move ) 3、' a '、' c '、' b ' ) #的输出是手动进行的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。