举个例子,我将使用代码,接近,posted on stackoverflow:ç递归太深
void recurse(int level=1) {
printf("Level=%02d\n", level);
if (level > 14) {
printf("Depth exceeded 14 !!!\n");
return;
}
recurse(level+1);
//recurse(level+1);//commented out, i get levels 1-15 in a row
}
假设我有
recurse(1);
称之为随着内部功能我一个递归调用得到我的预期 - 等级1-15打印出来和超出的信息。
如果我取消第二次通话的注释,即时消息不会得到2 x 15的额外消息,但即时消息猜测,15 x 15深度超出的消息。
有没有办法改写这种方式,我会有2 x 15递归深度,而不是15 x 15?
谢谢你们的快速解答。
不幸的是,我已经把它全部弄错了:)我的印象是,第一个内部调用会缓存出来,然后是第二个,所以我会有2 x 15的深度。
错误的猜测。您将收到2^14条消息,因为您可以轻松验证(或通过归纳证明)。 –
'void recurse(int level = 1){':语法错误(C没有默认参数) – wildplasser