在GATE准备的零件测试中,存在一个问题:
f(n):
if n is even: f(n) = n/2
else f(n) = f(f(n-1))
我回答“它将终止于所有整数”,因为即使对于某些负整数,它将终止为Stack Overflow Error。
但是我的朋友不同意说,由于这不是实现的代码,而只是伪代码,因此在某些负整数的情况下将是无限递归的。
哪个答案正确,为什么?
while (true);
不会终止,也不会导致堆栈溢出。
while(true);
以任何堆栈方式实现的任何事情绝对是不明智的。关键是,除非您故意不让自己尴尬,while(true);
否则不会终止也不会触发堆栈溢出。