我一直在試圖學習SML NJ(標準ML新澤西州),我遇到了一個函數,我明白是遞歸,但不能完全圖爲什麼函數返回它所做的值。瞭解總和函數調用自己(遞歸?) - SML
功能:
fun sum 0 = 0 | sum n = n+sum (n-1);
我明白,如果和的值是0,那麼將返回0。但是,我不明白第二部分是如何工作的。
測試功能:
Input: sum 0; ---> output: 0;
Input: sum 1; ---> output: 1;
Input: sum 2; ---> output: 3;
Input: sum 3; ---> output: 6;
Input: sum 4; ---> output: 10;
我相信它應該計算如:總和N =(N +(總和(N-1)),所以給定的n = 2,(2 +(SUM(但是,給定n = 4,(4+(sum(4-1))=> 4 + 3 = 7;我沒有得到該值這是由程序輸出
如果任何人可以向我解釋爲什麼或我在哪裏想錯了,那將是很大的幫助,謝謝你
是的正確,我理解那部分,但第二個表達我有點困惑在aha –
請看我編輯的答案。 – Prashant
啊好吧,我想我明白了!非常感謝! –