○李 靜
“雞兔同籠”最早記錄于我國的古書《孫子算經》之中。此問題在多個版本教材中都有涉及。教材注重引導學生用猜測、列表枚舉、假設法(算術解法)等方法解決問題(部分教材呈現方程解法),體現了解決問題方法的多樣化。
之前學生已有用猜測、列表枚舉解決問題的經驗,因此教學時,在簡單的猜測和列表后,教師都要花大量的精力用圖形、動畫等手段教學假設法。假設籠中全是雞,根據條件推理計算出有幾只雞、幾只兔。但是,為什么要假設全是雞呢?學生往往不去想或想不明白這一問題,而是被動地照著去假設。
波利亞在《怎樣解題》中提出:“教師應當把自己放在學生的位置上,了解學生是怎么想的,然后順勢提出一個問題或建議,而這正是學生自己原本應該想到的。”筆者嘗試引導學生最大限度地參與問題解決的過程,建立各種解法的聯系,讓他們順勢想到假設法。
引導學生借助畫圖、符號等手段分析數量關系,根據頭的數量和隱含的條件猜測一組數據,嘗試求解問題。
師:可以從8 個頭的條件出發,假設一組數據,看能否滿足26 只腳的條件。
生:假設有4 只雞、4 只兔,共有4×2+4×4=24(只)腳。
師:你可以畫圖表示一下剛剛的假設嗎?

師:少了2 只腳,沒有得到正確結果,你能調整一下找到正確答案嗎?
生:少了26-24=2(只)腳。說明兔子實際的數量比假設的要多。因為每只兔子比每只雞多2 只腳(隱含條件),2÷2=1(只),再調整兔子和雞的數量,加1 只兔,4+1=5(只)兔,減少1 只雞,4-1=3(只)雞。
師:怎樣畫圖表示剛剛的調整過程?

師:還可以怎樣假設?怎樣調整?你能邊畫圖邊說明嗎?
教師引導學生將語言表述、畫圖及符號表示(列算式)有機結合起來。在學生想不清楚的地方,教師適時提問或引導其他學生質疑、補充。如:你能解出這道題的一部分嗎?題目中還有哪些隱含的有用數據?哪些隱含信息可以幫助你調整求出未知量?學生由此感悟到猜測任意一組數據都能根據隱含條件求解問題,溝通了猜測法與假設法之間的聯系。
承接“先猜測再調整”的思路,教師提出問題:“你能將所有猜測方案都列舉出來嗎?”這時,列表的目的就不只是找到答案,而是整理解決問題的思路。通過調動學生之前解決問題的經驗,便可以找到解題的“通解通法”。

頭雞8 7…………兔0 1腳總腳數:2×8=16腳數差:26-16=10,少了10 只腳。總腳數:2×7+4×1=18腳數差:26-18=8,少了8 只腳。……調整一只兔比一只雞多4-2=2(只)腳。增加兔:10÷2=5兔:0+5=5減少雞:5雞:8-5=3一只兔比一只雞多4-2=2(只)腳。增加兔:8÷2=4兔:1+4=5減少雞:4雞:7-4=3……
綜上,列表中的每一種猜測都可以調整得出正確結果,教材給出的“假設法”不過是假設極端值(假設全是雞或假設全是兔)的一種情況而已。為什么要假設極端值呢?因為這樣計算腿數簡單,調整過程也簡單。由此,學生便找到了解決“雞兔同籠”問題的通法,并在通法中分離出簡便方法——假設法,學生心中的疑問“為什么假設全是雞”便解開了。教材中給出的三種方法,即猜測法、列表法、假設法也都統一到一個解題思路之中了。
以上都是從滿足8 個頭的條件進行假設的(頭的數量少,方便調整)。教師還可以引導學生變換角度繼續思考:“我們還能從其他條件出發進行假設嗎?”當然,我們也可以從腳的只數出發進行假設:假設26 只腳全是雞的腳,然后調整。不過腳的數量復雜,調整起來也更麻煩些。
“雞兔同籠”問題還有許多解法。如“抬腿法”,解題思路與記載在《孫子算經》中的解題方法“半足法”相同:上置頭,下置足,半其足,以頭除足,以足除頭即得(腳數除以2,結果減頭數得兔,再用總頭數減兔,得雞)。除了《孫子算經》,中國古代數學書籍《算法統宗》中也記載了一道“雞兔同籠”的問題,還有一個同類型的“米麥問題”。《算法統宗》采用的解題方法是與“半足法”不同的“倍頭法”和“四頭法”,即:倍頭減足折半是兔(頭數乘2,足數減掉乘積后除以2 得兔);四頭減足折半是雞(4 乘頭數,減掉足數除以2 得雞)。
整理算法后我們發現,“半足法”是從滿足腳的條件出發的假設法,而“倍頭法”“四頭法”則是從滿足頭的條件出發的假設法。
不管是古書中的“半足法”“倍頭法”,還是教材中的“假設法”,都只呈現了解決問題的步驟。任何程序化的算法背后都有創造算法的思路。教學中,教師應引導學生充分經歷算法背后思路的思考過程,溝通猜測法、列表法與假設法之間的關系,消除心中的疑惑。
“半足法”和“倍頭法”用解二元一次方程的“消元法”理解更具有去情境化的優勢。以“半足法”為例。
假設有x只雞,y只兔:

方程法解決“雞兔同籠”問題具有去情境化、結構化的特點。學習方程之后,可以讓學生用方程方法再來解決“雞兔同籠”問題,比較代數思維和算術思維的不同,感受不同解法背后的相通之處。