#42036: python 題目都說用遞迴了,那就好好練習吧


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 不指定學校
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2024-11-09 20:16:56
d487. Order's computation process -- 學姊 | From: [123.192.228.253] | 發表日期 : 2024-09-21 20:57

階乘是用來練習遞迴的經典題目

寫一個用來計算階乘的遞迴不難,遞迴關係式就這樣

 

 
n 為大於等於 0 的整數

 

題目要求輸出時不僅僅要輸出 f(n) 的結果,還要把過程都一起丟出來,那就有 2 個做法

  • 另外處理,用 range() 把需要的答案印出來
  • 放在遞迴裡面,一邊算一邊處理

這邊我是放遞迴裡面,一邊算一邊處理

 

from sys import stdin


def factorial(n: int):
if n in (0, 1): # 如果 n 是 1 或 0,就直接返回 1
my_list.append(1)
return 1
my_list.append(n)
return n * factorial(n - 1)


for n in stdin:
n = int(n)
my_list = [] # 用來保存計算過程
ans = factorial(n)
print(
f'{n}!',
'=',
       " * ".join(map(str, my_list)),
'=',
ans
)

 

如果還是只想用 for 循環,其實也不能阻止就是了

 

 
ZeroJudge Forum