關鍵就在這是,除非b
== 1,unknown()
稱unknown()
- 這被稱爲遞歸。
爲了簡便起見,我要調用的函數˚F而不是未知:
一些語言功能,目前像這樣與模式匹配更明確的方式;在一個假想的模式匹配語言等價可能是:
f(x,1) := x
f(x,y) := x + f(x,y-1)
等等...
f(3,4) = 3 + f(3, 4-1)
= 3 + f(3, 3)
= 3 + (3 + f(3, 3-1))
= 3 + (3 + f(3, 2))
= 3 + (3 + (3 + f(3, 2 - 1)))
= 3 + (3 + (3 + f(3, 1)))
= 3 + (3 + (3 + (3)))
= 12
我猜你的功課是決定什麼功能的更好的名字比「未知」。一旦你決定,請注意,遞歸不來實現該功能,除非你的語言有一個名爲尾遞歸優化(這可能是你想要擱置供以後的一個主題)功能,具體支持的最佳途徑。
另外,其他人已經注意到C語言中不允許嵌套函數 - 即使您的特定編譯器可能會處理它們。這意味着雖然你的程序是這樣的:
int function1() {
int function2(int x) {
...
}
int x = function2(3);
}
......一個標準的C編譯器不會允許它。正常的方法是:
int function1() {
int x = function2(3);
}
int function2(int x) {
...
}
寫下'a'和'b'的兩列,並且通過它們的開始值來處理,直到找到正確的答案。 –
這與逗號操作符有什麼關係?並告訴你的學校在C中不允許嵌套函數。 –
@PaulGriffiths,有點相關... http:// meta。stackexchange.com/a/66378/226150 – jonhopkins