`
ldb19890624
  • 浏览: 238426 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Python学习笔记(8)

 
阅读更多

Python学习笔记(8)



一、递归
函数调用自身,即为递归函数。
例子:
def main():
message()
def message():
print 'This is a recursive function.'
message()
main()

结果:
This is a recursive function.
This is a recursive function.
......
File "C:/temp/p19.py", line 5, in message
message()
RuntimeError: maximum recursion depth exceeded

Python解释器规定了递归深度,故运行到一定深度,将报错。

例2:
def main():
message(5)
def message(times):
if(times>0):
print 'This is a recursive function.'
message(times-1)
main()

结果:
This is a recursive function.
This is a recursive function.
This is a recursive function.
This is a recursive function.
This is a recursive function.

例3:
# This program uses recursion to calculate the factorial of a number.
def main():
# Get a number from the user.
number = input('Enter a nonnegative integer:')
# Get the factorial of the number.
fact = factorial(number)
# Display the factorial.
print 'The factorial of',number,'is',fact
def factorial(num):
if num == 0:
return 1
else:
return num*factorial(num-1)
main()

结果:
Enter a nonnegative integer:6
The factorial of 6 is 720

二、直接递归和间接递归
间接递归是函数不直接调用自己,而是采用如下形式:
1)函数A调用函数B,函数B调用函数A
2)函数A调用函数B,函数B调用函数C,函数C调用函数A
......
这样的递归才是间接递归。

例:
# The program demonstrates the range_sum function.
def main():
numbers = [1,2,3,4,5,6,7,8,9]
my_sum = range_sum(numbers,2,5)
print 'The sum of items 2 through 5 is',my_sum
def range_sum(num_list,start,end):
if start>end:
return 0
else:
return num_list[start]+range_sum(num_list,start+1,end)
main()

结果:
The sum of items 2 through 5 is 18

求最大公约数的另一种算法:
def main():
num1 = input('Enter an integer:')
num2 = input('Enter another integer:')

print 'The maximum common number:', ywf(num1,num2)
def ywf(a,b):
c = 1
if a == 0:
return b
if b == 0:
return a
if a<b:
t=a; a=b; b=t
while(a != b):
if a%2 == 0 and b % 2 == 0:
a=a/2; b=b/2; c=c*2
elif a%2 == 0 and b%2 == 1:
a=a/2
elif a%2 == 1 and b%2 == 0:
b=b/2
else:
a=a-b
if a<b:
t=a; a=b; b=t
return c
main()

例:汉若塔问题
# The program simulates the Towers of Hanoi game.
def main():
# Set up some initial values.
num_discs = 3
from_peg = 1
to_peg = 3
temp_peg = 2
# Play the game.
move_discs(num_discs,from_peg,to_peg,temp_peg)
print 'All the pegs are moved!'
# The moveDiscs function displays a disc move in the
# Towers of Hanoi game.
# num: the number of discs to move.
# from_peg: the peg to move from
# to_peg: the peg to move to
# temp_peg: the temporary peg.
def move_discs(num,from_peg,to_peg,temp_peg):
if(num>0):
move_discs(num-1,from_peg,temp_peg,to_peg)
print 'Move a disc from peg',from_peg,'to peg',to_peg
move_discs(num-1,temp_peg,to_peg,from_peg)
main()


分享到:
评论

相关推荐

    Python学习笔记(干货) 中文PDF完整版.pdf

    这份"Python学习笔记"涵盖了从环境搭建到基础语法,再到数据类型和控制结构等关键知识点,旨在为初学者提供全面的学习指导。 首先,1.1章节介绍了Python的基础,包括Python的起源和历史。Python是由Guido van ...

    Python学习笔记--皮大庆.pdf.zip

    【Python学习笔记--皮大庆.pdf.zip】是一个针对初学者的Python编程教程,源自英文书籍《How to think like a computer scientist》。这本书以易懂的方式介绍了Python语言的基础知识,旨在帮助没有编程背景的人快速...

    皮大庆Python学习笔记

    Python基础入门教程,适合Python初学者,文档内容包括, 目录 前言 i 第一章 程序 1 1.1 程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 什么是调试 . . . . . . . . . . . . . . . ....

    最新Python学习笔记3

    本篇学习笔记主要介绍了Python中关于变量指向函数、高阶函数以及特殊高阶函数map()、reduce()、filter()和sorted()的使用方法和原理。 首先,变量在Python中不仅可以指向基本数据类型,还可以指向一个函数名。这...

    python学习笔记.pdf

    在这份《python学习笔记.pdf》中,记录了Python编程的基础知识和一些技巧,内容涵盖了字符串处理、变量操作、数据结构、循环、条件判断等方面。以下是对学习笔记中提到知识点的详细说明。 ### 字符串处理 在Python...

    Python学习笔记-王纯业

    【Python学习笔记-王纯业】是一份专为Python初学者设计的教程,由王纯业编撰。这个教程深入浅出地介绍了Python编程的基础知识,帮助初学者快速上手。下面将详细阐述该教程中可能包含的重要知识点,以及Python入门者...

    Python学习笔记--皮大庆

    Python学习笔记--皮大庆

    王纯业的Python学习笔记

    《王纯业的Python学习笔记》是一份专为Python初学者和进阶者设计的学习资料,旨在帮助读者全面掌握这门强大的编程语言。Python作为一门高级编程语言,因其简洁、易读的语法特性,被广泛应用于数据分析、机器学习、...

    python学习笔记汇总

    python学习笔记汇总

    python学习笔记+源码练习

    "Python学习笔记+源码练习"是一个适合初学者的资源包,旨在帮助你从零基础开始掌握Python编程。这份资料包含了理论知识讲解和实际代码实践,使学习过程更为直观和实用。 在学习Python时,笔记是关键,它们可以帮助...

    Python学习笔记大集合

    Python学习笔记 附赠可爱的Python 同时增加了UltraEdit的高亮显示Shell 及Python的文件

    python学习笔记用案例

    "Python学习笔记用案例"这个标题表明这是一份包含了实际应用示例的学习资料,旨在帮助初学者通过实例来理解和掌握Python编程。描述中的“欢迎下载”暗示这份资料是公开共享的,鼓励大家学习和交流。 在Python的学习...

    最新Python学习笔记5

    Python学习笔记5的知识点包括: 1. datetime模块的使用:datetime是Python处理日期和时间的标准库,可以完成多种与日期和时间相关的工作。 - 获取当前日期和时间:使用datetime.now()函数可以获取当前的日期和...

    王纯业版python学习笔记

    《王纯业版Python学习笔记》是一本专为Python初学者设计的教程,作者王纯业以其简洁明了的写作风格,使得这本相对较为薄的书籍成为了初学者掌握Python编程的理想选择。这本书深入浅出地介绍了Python的基础知识,包括...

    Python学习笔记1 ~ Python学习笔记9 - 海龟画图.zip

    Python学习笔记0001 - 安装与配置Python开发环境 Python学习笔记0002 - 海龟画图 - 初画图形 Python学习笔记0003 - 海龟画图 - 变量 Python学习笔记0004 - 海龟画图 - for循环 Python学习笔记0005 - 海龟画图 - ...

Global site tag (gtag.js) - Google Analytics