學習程式語言已是公民必備技能,然而程式語言中的遞迴的教學卻一直以來都是教師們的難題,其原因在於學習者使用結構化程式設計的思維學習遞迴程式,初學者若是以結構化程式設計的程式語言入門,在學習遞迴程式時會受到結構化程式語言的影響而難以學會,這是因為結構化程式設計本身的機制並不利於用來學習遞迴,然而函式程式設計的思維卻與結構化程式設計的思維不同,學習者以函式程式設計的思維能更容易理解遞迴,其原因在於函式程式設計的思維與遞迴一模一樣,因此,本文提出了以合作學習的角色分工讓學習者無法使用結構化程式設計的思維,轉而讓學習者能從函式程式設計的思維學習遞迴的學習方法,以合作學習角色分工遞迴程式問題中的三個部分,學習者以三步驟進行函式程式設計思考學習遞迴程式,並以此學習方法設計了一套學習系統,為了驗證使用此學習方法的系統在學習遞迴程式上的學習成效,本研究進行了長達四週的實驗,實驗結果顯示使用本研究提出的學習方式所設計的學習系統在學習遞迴程式上比沒有使用此學習方法的控制組有更好的學習成效,因此,以合作學習角色分工遞迴程式問題中的三個部分讓學習者獲得函式程式設計思維在解決遞迴程式問題上有著正面的效果。;Learning programming languages has become an essential skill for citizens. However, teaching recursion within programming languages has always been a challenge for teachers. The reason lies in the fact that learners, who adopt structured programming thinking, face difficulty in learning recursive programming. For beginners who start with structured programming languages, the influence of structured programming concepts makes it challenging to grasp recursion. This is because the mechanisms of structured programming are not conducive to learning recursion. On the other hand, functional programming thinking differs from structured programming thinking. Learners who adopt functional programming thinking find it easier to understand recursion. The reason is that functional programming thinking is identical to recursion. Therefore, this article proposes a cooperative learning approach that restricts learners from using structured programming thinking and instead enables them to learn recursion through functional programming thinking. By dividing the roles in cooperative learning, the three components of recursive programming problems are addressed. Learners go through three steps of thinking in functional programming to learn recursive programming. Based on this learning approach, a learning system is designed. To validate the effectiveness of this learning system in learning recursive programming, a four-week experiment was conducted in this study. The experimental results demonstrate that the learning system designed using the proposed learning approach exhibits better learning outcomes in learning recursive programming compared to the control group that did not use this learning method. Thus, by employing cooperative learning and dividing the roles in recursive programming problems, learners gain positive effects in solving recursion problems through functional programming thinking.