更新於 2024/10/19閱讀時間約 3 分鐘

Python數學 - 愛情篇

記憶中,大一必修的程式課,我過得很痛苦。以前所有的資訊來自課堂或書籍,不知道是太艱澀了或是當時的我還沒開竅,我以為懂了,但作業永遠寫不出來。後來經歷了其他課程作業與研究的逼迫與摧殘,寫程式卻成了我吃飯的工具。那時沒人告訴我,多寫多看是關鍵。有點像學外語,當你到了非說不可的環境中,會逐漸找到語感,從各樣的錯誤中修正並進步。

Python與數學

有鑑於過往痛苦的經歷,我體悟了學程式語言應從需求出發,並且要以生活中可理解的事物作為範例學習。所以在去年大膽地進行了一個實驗:我們來上中小學生的 Python 課程,透過寫程式解數學題目培養直覺。

我對你的愛與日俱增

很幸運,幾個小男生陪著我堅持了一年。今年他們一起進入了七年級,我觀察到他們對於愛情這件事開始有了想像。最近他們選了一篇很瓊瑤式的題目:

明明:「我們的愛就像是函數!我對妳的愛是與日俱增呢!」
數數:「你的意思是,你在第 n 天對我的愛若用函數 f(n) 來描述,那麼,f(n) = n + f(n-1)。也就是說,每一天都比前一天多了一單位的愛,並且與舊的愛累積起來嗎?」
明明點了點頭,然後問,「那麼,妳呢?」
數數:「我在第 n 天對你的愛若是 g(n),則會滿足 g(n) = f(n) + g(n-1) 關係!」

題目出處:Zero Judge

七年級的孩子,帶著近乎玩笑的口氣讀完了題目後,我問他們:誰比較愛誰呢?

很欣慰,他們看懂,也答對了。

這個題目表達了一個函數遞迴的觀念。

國高中的數學,大多可以在程式中找到對應的樣貌。除了函數遞迴之外,幾何圖形的繪製、統計數據的分析等等,也都可以透過 Python 程式碼來實現。


解題:函數可以呼叫自己不斷遞迴

這是明明的愛

def f(n):

if n <= 1:

return n

else:

return n + f(n-1)

這是數數的愛

def g(n):

if n <= 1:

return n

else:

return f(n) + g(n-1)


函數可以呼叫自己不斷遞迴果真神奇,祝大家都找到你們愛的函數

也希望這些孩子們在學習程式的過程中,不僅能體會到數學的樂趣,也能培養解決問題的能力,並在未來的人生道路上發光發熱。


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.