关键就在这是,除非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