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)