Python编程基础:实验6——函数的递归

简介: 有关Python函数递归的一些题目,非常经典,开箱即用。

一、前言

本期博客主要练习有关函数的递归方法,函数的递归有很多经典的例子,在这里我就写一下老师提供的几个题目,如果还想继续做相关题目的话,大家可以去力扣上面刷题。

注意:代码仅供参考,还请大家多多思考!

二、我的环境

  • 电脑系统:Windows 11
  • 语言版本:Python 3.10.4
  • 编译器:VSCode

三、实验目的与要求

  1. 掌握函数递归的定义和使用方法
  2. 理解实验中的经典递归算法思想

四、实验任务

1、程序填空

【填空8-1】采用递归思想,编程求斐波那契数列的指定项,指定项由键盘输入,请在代码的横线处补充。

斐波那契数列的公式是:

20200410170206910.png

如下是斐波那契数列计算过程的动态图:

2-210R0100005236.gif

deffibonacci(n):
ifn>2:
returnfibonacci(n-1) +fibonacci(n-2)
elifn==2:
return1elifn==1:
return1x=eval(input("Input x="))
print(fibonacci(x))

它运行的结果是:

Inputx=1055

如果要显示斐波那契数列数列的前n项,n由键盘输入,我们可以这样修改以上程序来实现:

deffibonacci(n):
ifn>2:
returnfibonacci(n-1) +fibonacci(n-2)
elifn==2:
return1elifn==1:
return1x=eval(input("Input x="))
print(fibonacci(x))
foriinrange(1, x+1) :
print(fibonacci(i), end=" ")

它运行的结果是:

Inputx=105511235813213455

【填空8-2】采用递归思想,以二分法查找有序列表的指定值,请在代码的横线处补充。

如下是二分法原理图:

v2-6251fe5159bb30c0d34b3eeebd4257d3_b.png

defdichotomy(alist, item):
iflen(alist) ==0:     # 查找范围为空返回找不到FalsereturnFalseelse:
midpoint=len(alist) //2# 求查找范围的中间点ifalist[midpoint] ==item:
returnTrueelse:
# 待查值小于中间点,即缩小查找范围为中间点左半侧ifitem<alist[midpoint]:
returndichotomy(alist[: midpoint] , item)
# 待查值大于中间点,即缩小查找范围为中间点右半侧else:
returndichotomy(alist[midpoint+1:], item)
testlist= [0, 1, 2, 8, 13, 17, 19, 32, 42]
print(dichotomy(testlist, 3))
print(dichotomy(testlist, 13))

它运行的结果是:

FalseTrue

2、程序编程

【编程8-1】采用递归思想,将一个正整数倒序输出,例如给出正整数n=12345,即输出54321。

提示:首先输出这个数的个位数,然后再输出前面数字的个位数,直到之前没有数字为止。

首先递归表达式是:

函数递归.jpg

rev_num=0base_pos=1defreversDigits(n):
globalrev_numglobalbase_posif(n>0):
reversDigits(int(n/10))
rev_num+= (n%10) *base_posbase_pos*=10returnrev_numn=eval(input("请给出正整数n="))
print("倒序输出后结果是:",reversDigits(n))

它运行的结果是:

请给出正整数n=12345倒序输出后结果是:54321

五、最后我想说

本期内容就涉及到了函数递归的相关算法,我们首先要去理解它的原理才能更好更快的写出对应的程序,所以还是很有必要去看一下相关的数学原理。

除了上面所提到的题目,还有很多经典的例子,比如汉诺塔、数的阶乘等等,网上有很多,各种语言版本都有,大家可以去看一看,然后练一练,毕竟熟能生巧。

目录
相关文章
|
2天前
|
分布式计算 算法 Python
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
|
2天前
|
数据挖掘 数据处理 Python
Python编程入门:从基础到实践
【6月更文挑战第26天】这篇文章引导读者逐步学习Python编程,从基础语法如变量、数据类型(整数、浮点数、字符串)到条件语句、循环(if/for/while),再到函数定义和模块导入。通过实例展示了Python在文本处理、数据分析(使用pandas)和Web开发(使用Flask)的应用。学习Python能为初学者开启更广阔的技术领域,如面向对象编程、并发和网络编程等。
|
2天前
|
Python
经验大分享:python类函数,实例函数,静态函数
经验大分享:python类函数,实例函数,静态函数
|
2天前
|
Python
|
2天前
|
索引 Python 容器
Python数据类型:编程新手的必修课
Python数据类型:编程新手的必修课
|
2天前
|
Python
经验大分享:Python函数返回值
经验大分享:Python函数返回值
|
2天前
|
算法 Java 程序员
Python面相对象的编程
Python面相对象的编程
|
2天前
|
Python
揭秘Python安装目录:你的编程宝库隐藏了哪些宝藏?
揭秘Python安装目录:你的编程宝库隐藏了哪些宝藏?

热门文章

最新文章