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)