如何解决递归中的主要功能
我尝试了main函数中的递归,但是为什么'i'变量没有被更新,它只会被更新直到i = 1,然后保持不变。 下面是代码:-
int main(int i = 0)
{
std::cout << "i value" << i << std::endl;
if (i == 3)
return 0;
std::cout << "hello" << std::endl;
main(i++);
}
解决方法
例如参见cppreference/main_function:
主要功能具有几个特殊属性:
不能在程序中的任何地方使用
a),特别是不能递归调用
b)无法获取其地址
[...]
您不能递归调用main
。另外,您的签名不正确。正确的签名是:
int main () { body } (1)
int main (int argc,char *argv[]) { body } (2)
/* another implementation-defined form,with int as return type */ (3)
对于(3),您需要检查您的实现,但我不知道一个允许int main(int)
的实现(尽管我没有费心检查)。
最后但并非最不重要的一点,foo(i++);
将使i
递增,然后以原始值foo
调用i
。您可能想要foo(++i);
或更喜欢foo(i + 1);
。
TL; DR
int my_main(int i=0) {
// put code here
my_main(i + 1);
}
int main() {
my_main();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。