1 #1.(python)打印菲波那切数列的前n项。使用两种循环和递归两种方式 2 #循环 3 n=10 4 a=b=1 5 li=[] 6 for i in range(n): 7 li.append(a) 8 a,b=b,a+b 9 print(li) 10 #结果[1, 1, 2, 3, 5, 8, 13, 21, 34, 55] 11 12 #递归 13 li2=[] 14 n=10 15 def fun2(n): 16 if n==1 or n==2: 17 return 1 18 else: 19 return fun2(n-1)+fun2(n-2) 20 for i in range(1,n+1): 21 li2.append(fun2(i)) 22 print(li2) 23 #结果[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
1 #法2 2 #递归 3 def que2_1(): 4 def fun2(x,y,n): 5 print(x) 6 a=0 7 if a > n-2: 8 return "结束" 9 x,y =y,x+y 10 return fun2(x, y,n-1) 11 12 print(fun2(1,1,4)) 13 que2_1() 14 #结果;1 15 # 1 16 # 2 17 # 3 18 # 结束 19 20 #循环 21 def que2_2(): 22 x=1 23 y=1 24 n=int(input("请输入n的值:")) 25 if n==1 : 26 print([1]) 27 elif n==2: 28 print([1,1]) 29 else: 30 a=3 31 li1=[x,y] 32 while a<=n: 33 x,y=y,x+y 34 li1.append(y) 35 a+=1 36 print(li1) 37 que2_2() 38 # 结果 39 # 请输入n的值:10 40 # [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
1 # 2. (python)猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。(递归法、迭代法) 2 3 #递归法 4 li=[10,9,8,7,6,5,4,3,2,1] 5 # nums=[1,(1+1)*2,(((1+1)*2)+1)*2...] 6 def fun3(i): 7 if i==10: 8 return 1 9 else: 10 return (fun3(i+1)+1)*2 11 print(fun3(1))#结果1534 12 13 #迭代法 14 #法1 15 day=10 16 x=1 17 while day>1: 18 x=(x+1)*2 19 day-=1 20 print(x)#结果1534 21 22 #法2 23 li = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] 24 li1 = [] 25 # li1=[1] 26 for index, i in enumerate(li): 27 if index == 0: 28 nums = 1 29 li1.append(nums) 30 else: 31 nums = (li1[index - 1] + 1) * 2 32 li1.append(nums) 33 print(li1, li1[-1])#结果1534