zoukankan      html  css  js  c++  java
  • 递归-python

    利用递归函数来解决数学中的阶乘问题

     def fact(n):  
      2     if n== 0: 
      3         return 1
      4     else:     
      5         return n*fact(n-1)
      6               
      7

    利用递归函数来解决汉诺塔问题

    关于汉诺塔问题,代码很多人知道,甚至倒背如流

    问题描述:把 A竿的盘全部移动到C竿上,并且顺序不能改变,每次只能移动一个盘子,并且要求在移动过程中始终保持这大盘在下小盘在上。

    代码罗列:

    def fact2(n,src,dst,mid):
     14     global count                                           
     15     if n ==1: 
     16         print("{}:{}->{}".format(1,src,dst))
     17         count += 1
     18     else:     
     19         fact2(n-1,src,mid,dst)
     20         print("{}:{}->{}".format(n,src,dst))
     21         count += 1
     22         fact2(n-1,mid,dst,src)

    1、先从最简单的两个盘来说起

    两个盘虽然简单,但多盘问题基本上都是围绕着两个盘的问题来开展的。

    规律:

    两个盘的移动可以只通过两根柱子之间来而完成,而不需要地三根柱子的辅助

    需要注意的一点就是大家一定不要纠结与每个盘是怎么具体移动的,否则则会钻井牛角尖中。

    递归

    递归的实现是函数+分支语句

    递归的过程就是递和归的过程

    汉诺塔的最终简化移动过程就是

    A->B将n-1个盘子移动到B

    A->c将最大的盘移动到C

    B->C将n-1个盘移动到C

    笨鸟先飞
  • 相关阅读:
    利用Connect By构造数列
    Linux学习4——Vim和Bash
    Linux学习3——磁盘文件管理系统与压缩和打包操作
    Linux学习2——文件与目录
    Linux学习1——首次登录
    Linux系统的简介及Linux系统的安装
    Windows系统的安装
    5月份的技术总结
    计算机网络基本概念
    软件测试基础概念摘要
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/13627566.html
Copyright © 2011-2022 走看看