0
我在讀Concepts, Techniques, and Models of Computer Programming,開始時有一段代碼,無論我多麼努力,我都無法理解。這些Pascal三角函數是如何工作的?
declare Pascal AddList ShiftLeft ShiftRight
fun {Pascal N}
if N==1 then [1]
else
L in
L = {Pascal N-1} % Recursion
{AddList {ShiftLeft L}
{ShiftRight L}}
end
end
fun {ShiftLeft L}
case L of H|T then
H|{ShiftLeft T} % Recursion
else [0]
end
end
fun {ShiftRight L}
0 | L
end
fun {AddList L1 L2}
case L1 of H1|T1 then
case L2 of H2|T2
then
H1+H2|{AddList T1 T2} % Recursion
end
else nil
end
end
我種得到的語言結構(這是介紹),但真正站在我的方式就是遞歸。
我試圖在每個遞歸調用上放一個標籤,它會抽象地說出這裏發生了什麼,但我無法弄清楚。
我要求的是對這些功能如何工作的清晰和簡單的解釋。