欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

python递归学习笔记

时间:2023-05-30
目录

定义递归两个条件递归三要素例子

n的阶乘判断回文字符串洛谷 P1427 小鱼的数字游戏球路程猴吃桃字符串反转 定义

递归是将一个大问题分解为一个小小问题,直到问题无法分解,再去解决问题。

递归两个条件

基线条件:
问题可以被分解为最小问题,当满足基线条件,递归不再执行,转而解决问题。

递归条件:
可以将问题继续分解的条件。

递归三要素 明确这个函数干什么用的。寻找递归结束条件。找出函数的等价关系式。 例子 n的阶乘

def fn(n): # 定义的fn()就是要做计算n的阶乘 # 基线条件 if n == 1: return 1 # 递归条件,n * fn(n-1)是函数关系式 return n * fn(n-1)

判断回文字符串

def fn2(str1): # fn2()判断字符串是不是回文字符串 # 基线条件 if len(str1) < 2: return True elif str1[0] != str1[-1]: return False # 递归条件 return fn2(str1[1:-1])r = fn2('abcdefghrhgfedcba')print(r) # True

洛谷 P1427 小鱼的数字游戏

题目地址、

import osimport syslist = input()num = [int(n) for n in list.split()]def Reverse(strings):# 基线条件 if len(strings)==2: return str(strings[0]) # 递归条件 else: # str(strings[-2])每次取Reverse(strings[:-1])的值 return str(strings[-2])+ ' ' +str(Reverse(strings[:-1]))print(Reverse(num))

球路程

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

def heigthM(num, heigth, sum): sum += heigth heigth /= 2 #第一次返回高度50 print(heigth, sum) # 查看每次返回的高度和经过多少米 if num == 1: return heigth ,sum else: sum += heigth # 返回到最高点时,经过多少米需要加上高度 return heigthM(num - 1, heigth, sum)print(heigthM(10, 100, 0)) #num是次数,heigth是高度,sum是经过多少米

猴吃桃

猴子吃桃问题:猴子第一天摘下若干个桃子,
当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,
又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?

def monkey(n): if n == 1: return 1 else: return (monkey(n - 1) + 1) * 2print(monkey(10))

字符串反转

def rvs(s): if s == '': return s else: return rvs(s[1:])+s[0] s= 'abcdefg'b=rvs(s)print(b) 输出:gfedcba

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。