编写递归函数,以c语言查找2到50的偶数之和

时间:2012-01-25 10:57:15

标签: c recursion

到目前为止我得到了这个。但我得到这个错误: “未定义的引用`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);

}

4 个答案:

答案 0 :(得分:3)

有几个问题是错误的:

  • 该函数在所有控制路径上递归,您需要一个停止条件。

  • 您似乎已将no1no2作为参数传递,但您可以在下一行中为它们指定值。有什么意义?

  • 您收到的错误是因为您可能正在编译窗口,其中main()被声明为int _tmain(int argc, _TCHAR* argv[])而不是int main(int argc, char* args[])

TL; DR- 的结论:

将程序中的main方法更改为int wmainint _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);