Python教程

python——“函数递归”练习 2021-11-19

本文主要是介绍python——“函数递归”练习 2021-11-19,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1,斐波那契数列

def qingwa(n):
  	if n == 1:
  		return 1
  	if n == 2 :
  		return 2
  	return qingwa(n-1) + qingwa(n-2)


num =int(input("请输入一个数:"))
res = qingwa(num)
print(res)

在这里插入图片描述
2,棋盘问题
某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),
问题:共有多少种走法?
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

def board(arr):
	if arr is None:
		return 0
	if len(arr) == 1 and len(arr[0]) == 1:
		return 1

	# 第一行只有一种走法
	for i in range(len(arr[0])):
		arr[0][i] = 1
	# 纵轴的第一列
	for i in range(len(arr)):
		arr[i][0] = 1

	# 外层循环控制的纵轴
	for i in range(1, len(arr)):
		# 里层循环控制的横轴
		for j in range(1, len(arr[0])):
			arr[i][j] = arr[i - 1][j] + arr[i][j - 1]

	return arr[len(arr) - 1][len(arr[0]) - 1]
if __name__ == '__main__':
	ls = [
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
		[0, 0, 0, 0, 0, 0, 0, 0],
	]
	count = board(ls)
	print(f"从左上角开始走,到右下角,共有{count}种走法")

在这里插入图片描述
3,有一对兔子,从出生后的第3个月起,每个月都生一对兔子,
小兔子长到第3个月后每个月又生一对兔子,
假如兔子不死,问第n个月第兔子对数为多少?

def get_rabbit(n):
	if n <= 3:
		return 1
	return get_rabbit(n - 1) + get_rabbit(n - 3)


num = int(input("请输入你需要多少个月:"))
res = get_rabbit(num)
print(res)

在这里插入图片描述
4,假设用户每次上楼梯只能上一个台阶或者两个台阶,请写一个函数,判断用户到第n台阶共有多少种走法

def get_count(n):
	if n < 3:
		return n
	return get_count(n-1) + get_count(n - 2)

num = int(input("请输入你的台阶数:"))
res = get_count(num)
print(res)

在这里插入图片描述
5,找出10000以内能被5或6整除,但不能被两者同时整除的数

def count(n):
	for i in range(1,n+1):
		if (i%6==0 or i%5==0) and not (i%5==0 and i%6==0):
			print(i,end="  ")


count(10000)

在这里插入图片描述
6,写一个方法,计算列表所有偶数下标元素的和(注意返回值)

def print_sum(ls):
    sum = 0
    i = 0
    while i < len(ls):
        sum += ls[i]
        i += 2
    return sum
    
ls = [1,2,3,4,5]
print("列表是:{},偶数下标元素和是:{}".format(ls,print_sum(ls)))

在这里插入图片描述
7,请使用函数完成选择、冒泡、插入三种排序
注:选择排序有点问题 求大佬解答

"""冒泡排序"""

def bubble(arr):
	for i in range(len(arr) - 1):
		for j in range(len(arr) - i - 1):
			if arr[j] > arr[j+1]:
				arr[j], arr[j+1] = arr[j+1], arr[j]
	return arr


ls = [1,23,43,2,3,-10,99,-100,11]
ls = bubble(ls)
print(ls)

"""选择排序"""

def bubble(arr):
	for i in range(len(arr)-1):
		index = i  
		for j in range(i,len(arr)-1):
			if arr[index] > arr[j]:
				index = j
				arr[i], arr[index] = arr[index], arr[i]
	return arr 


ls = [1,23,43,2,3,-10,99,-100,11]
ls = bubble(ls)
print(ls)

"""插入排序"""

def bubble(arr):
	for i in range(1,len(arr)):
		temp = arr[i]
		j = i-1
		while arr[j]>temp and j>=0:
			arr[j+1]=arr[j]
			j -= 1
		arr[j+1] = temp
	return arr


ls = [1,23,43,2,3,-10,99,-100,11]
ls = bubble(ls)
print(ls)

在这里插入图片描述

这篇关于python——“函数递归”练习 2021-11-19的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!