第二行定義了兩個自變量m和n都是整數。
如果(m==1)
返回1;
這意味著如果m等於1,函數的返回值就是1。很明顯,1只能分解成1,也就是只有壹個表達式。
如果(n==1)
返回1;
這意味著如果n等於1,函數的返回值就是1。顯然,m再大,當n為1時,也只能表示為m 1的和,即只有壹個表達式。
如果(m & ltn)
返回f(m,m);
這意味著如果m小於n,則返回值為f(m,m)。如果所有的加數都是自然數,最大的加數不會超過總和,所以當m小於n時,加數壹定小於m..
如果(m==n)
返回1+f(m,n-1);
如果m等於n,返回值是1+f(m,n-1),因為f(m,n)只是m=n比f(m,n-1)多壹個表示。
返回f(m,n-1)+f(m-n,n);
最後還有其他情況,即當m大於n時,此時的表示由兩部分組成,壹部分是f(m,n-1),即最大加數為(n-1)時的表示數;剩下的表示法是最大加數為n的情況,由於加數中至少有壹個n,所以表示法的個數等於剩余數m-n之和,可以表示為不大於n的自然數,根據函數的定義,表示法的個數為f(m-n,n)。