【发布时间】:2015-12-14 20:52:09
【问题描述】:
我的搜索没有产生任何结果。另外,我的英语很差,很抱歉。
所以我的程序应该这样做:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
float rec();
int main()
{
setlocale(LC_ALL,"");
int w;
scanf("%d",&w);
printf("%f",rec(w));
return 0;
}
float rec(n)
{
if (n<1)
{
printf("Error");
}
else if (n==1)
{
return 6;
}
else if (n>1)
{
return 1/2*rec(n-1)+4;
}
return 0;
}
当输入为 1 时,它输出 6,正如它应该的那样。
当输入为
当输入>1时,它只输出添加的数字
return 1/2*rec(n-1)+4;
在这种情况下,它输出 4。为什么?是rec(n-1) == 0吗?
我的问题是:
- 为什么不起作用?
- 当输入为
【问题讨论】:
-
@MarcB 在这种情况下他实际上返回 0,因为函数一直到最后
-
啊,是的。糟糕的缩进让我失望了......
-
你的函数原型是
float rec();,它不接受任何参数。您应该将其声明为float rec(int);(或任何适合的数据类型) -
另外你应该选择一本书,看看如何用现代 C 编写函数接口。你的原型和
rec的定义都应该有参数的类型, -
@Olipro,C 中的函数声明中没有空列表实际上意味着该函数可以接收任意数量和类型的参数。