主函数中的递归

Recursion in the main function

我在主函数中尝试了递归,但是为什么 '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:

The main function has several special properties:

  1. It cannot be used anywhere in the program

    a) in particular, it cannot be called recursively

    b) its address cannot be taken

[...]

您不能递归调用 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,然后使用 i 的原始值调用 foo。您可能想要 foo(++i); 或者 foo(i + 1);.

TL;DR

int my_main(int i=0) {
     // put code here
     my_main(i + 1);
}

int main() {
   my_main();
}