python编程学习递归,python递归程序书写简单

kodinid 7 0

大家好,今天小编关注到一个比较意思的话题,就是关于python编程学习递归问题,于是小编就整理了2个相关介绍python编程学习递归的解答,让我们一起看看吧。

  1. python递归能有几个基例?
  2. python中的汉诺塔递归算法的具体运算过程是怎样的?

python递归能有几个基例?

所谓基例就是不需要递归就能的,一般来说是问题的最小规模下的解。 例如:斐波那契数列递归,f(n) = f(n-1) + f(n-2),基例是1和2,f(1)和f(2)结果都是1 再比如:汉诺塔递归,基例就是1个盘子的情况,只需移动一次,无需递归 递归必须有基例,否则就是无法退出的递归,不能求解。

python中的汉诺塔递归算法的具体运算过程是怎样的?

基本的递归算法问题啊!

所谓汉诺塔,就是将n个盘子,从A柱借助B柱,挪动到C柱。那么这个过程其实可以分解为三步,先将n-1个盘子,从A挪到B,借助了C。然后将最大的盘子从A挪到C,最后就是将n-1个盘子从B挪到C,借助了A。

python编程学习递归,python递归程序书写简单-第1张图片-安济编程网
图片来源网络,侵删)

因此这个过程分解为了以下的函数处理,***设某函数f处理n-1个盘子,就是,

f(startpoint,endpoint,midpoint)

***设某函数处理单个盘子移动,就是

python编程学习递归,python递归程序书写简单-第2张图片-安济编程网
(图片来源网络,侵删)

move(startpoint,endpoint)

这样,一开始是f('A','C','B')

移动的过程就变化为了三步

python编程学习递归,python递归程序书写简单-第3张图片-安济编程网
(图片来源网络,侵删)

f('A','B','C') 实际是f(startpoint,midpoint,endpoint)

move('A','C') 实际是move(start, end)

到此,以上就是小编对于python编程学习递归的问题就介绍到这了,希望介绍关于python编程学习递归的2点解答对大家有用。

标签: 递归 盘子 汉诺