到目前为止我得到了这个。但我得到这个错误: “未定义的引用`WinMain @ 16'” 请帮忙。
int sumEvensRecursively(int no1, int no2)
{
no1=5;
no2=20;
if (no1 % 2 == 1)
{
return sumEvensRecursively(no1+ 1, no2);
}
return no1+ sumEvensRecursively(no1+ 2, no2);
}
答案 0 :(得分:3)
有几个问题是错误的:
该函数在所有控制路径上递归,您需要一个停止条件。
您似乎已将no1
和no2
作为参数传递,但您可以在下一行中为它们指定值。有什么意义?
您收到的错误是因为您可能正在编译窗口,其中main()
被声明为int _tmain(int argc, _TCHAR* argv[])
而不是int main(int argc, char* args[])
。
TL; DR- 的结论:强>
将程序中的main
方法更改为int wmain
或int _tmain
以解决编译器错误。
更改算法以使其实际工作。
答案 1 :(得分:2)
您始终在功能中将no1
重置为5。所以这将永远运行。
答案 2 :(得分:1)
这是一个无限递归。当递归停止时,你没有基本情况。
答案 3 :(得分:0)
此功能可以:
recur(int sum, int i){
if(i <= 50){
sum = sum + i;
return recur(sum, (i+2));
}
else
return sum;
}
参数的初始值为0,2。因此将recur函数称为
recur(0,2);