(day1)每日两题(python编程题)

 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

猜你喜欢

转载自www.cnblogs.com/mengzhi7/p/9634012.html