前往
大廳
主題

Python Recursion 作業

特愛淺水的人 | 2021-02-19 07:14:32 | 巴幣 0 | 人氣 159

自己練習而記錄

1. Write a Python program to calculate the sum of a list of numbers.
3. Write a Python program of recursion list sum.

Test Data: [1, 2, [3,4], [5,6]]
Expected Result: 21

第一個題目是 跑正常 list 出來總和
第二題目則是 給一個 包裝很多 list 的 list 出來的總和

解題 邏輯為 用 for 迴圈 去抓 i
如果 i 是 list 則 再跑自己一次 直到是單純 int
則 x += i

recursion 有個邏輯 是 recursion 完後的值
要拿來用 所以才有 x =+ b

def find_sum(n):
x = 0
for i in n:
# 設定停損點
    if isinstance(i,list):
# 如果  i 為 list 的話,則選擇 再帶入 i 再跑一次
# find_sum(i) 後跑出來的值 為 b,把他加入 x
      b = find_sum(i)
      x += b
    else:
# 如不是 list 則 加入 x
      x += i
  return x

f =  [1, 2, [3,4], [5,6]]

print(find_sum(f))

另外一個題目 則是 flatten_lst
就是把層層list 展開成 一個 list

l1 = [1, 2, [2, 4, 5, [4, 7], 6, 7, [3, 4]]]

def flatten_lst(lst):
x = []
for i in lst:
if isinstance(i, list):
b = flatten_lst(i)
# list 可用+ 相加
b += x
else:
x.append(i)
    return x

解法跟上面的大同小異
一樣 一個一個看後 單獨拿出來放進去 x

網路上有許多 recursion 的觀念的 YouTube 影片
有些人說 把大題目切成小塊 或是 一個 加上 一堆 的概念
不過到自己要去理解的時候還是覺得看不懂

創作回應

更多創作