这个C语言程序 ,到底 哪里有错啊?题目是:一直数列的前两项为0 和1,以后各项满足Xn+2Xn-1=Xn-2,

编写递归函数,输出前15项,每行5个数
#include <stdio.h>
void main()
{
long f(int n);
int i;
for(i=1;i<=15;i++)
{
printtf ("%d",f(i));
if(i%5==0) printf("\n");
}
}
long f(int n)
{
long t;
if(n==1) t=0;
else if(n==2) t=1;
else if(i>=3) t=f(n-2)-2f(n-1);
return(t);
}

#include <stdio.h>
int main()
{
long f(int n);
int i;
for(i=1;i<=15;i++)
{
printf ("%ld\t",f(i));//ld表示长整型。最好后面加个制表符来分隔
if(i%5==0) printf("\n");
}
return 0;//如果main函数是void类型就去掉此句
}
long f(int n)
{
long t=0;
if(n==1) t=0;
else if(n==2) t=1;
else if(n>=3) t=f(n-2)-2*f(n-1);
return(t);
}
自已好好对照一下吧,肯定没在电脑上调试吧。其实调试时很容易发现错误在哪的。在codeblocks下编译没有一个警告,不过我是按C++编译的。
但要注意一般不在函数内部写函数声明的,不知道为什么没有警告。
另外,main函数在C中可能是void型
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-22
#include <stdio.h>
void main()
{
long f(int n);
int i;
for(i=1;i<=15;i++)
{
printtf ("%d",f(i));
if(i%5==0) printf("\n");
}
}
long f(int n)
{
long t;

if(n==1) t=0;
else if(n==2) t=1;
else if(n>=3)
t=f(n-2)-2*f(n-1);
return(t);
}我帮你改了一下你自己看吧!不懂的话可以问我啊!咱两在探讨探讨啊
第2个回答  2012-05-22
你编译能通过吗?
else if(i>=3) t=f(n-2)-2f(n-1);应该是else if(n>=3)吧?
别的没看出什么问题啊?你要说是算出来结果不对还是什么?找错误总有个方向啊
第3个回答  2012-05-22
#include <stdio.h>
void main()
{
long f(int n);
int i;
for(i=1;i<=15;i++)
{
printf ("%d ",f(i));//不是printtf
if(i%5==0) printf("\n");
}
}
long f(int n)
{
long t;
if(n==1) t=0;
else if(n==2)t=1;
else if(n>=3)
t=f(n-2)-2*f(n-1);//不是i,2少了*号
return t;
}
这是修改后的应该没问题吧~
第4个回答  2012-05-22
#include <stdio.h>
void main()
{
long f(int n);
int i;
for(i=1;i<=15;i++)
{
printf ("%7d",f(i));
if(i%5==0) printf("\n");
}
}
long f(int n)
{

long t;
if(n==1) t=0;
else if(n==2) t=1;
else if(n>=3) t=f(n-2)-2*f(n-1);
return t;
}
间隔到底是多少啊?
第5个回答  2012-05-22
long f(int n)
{
long t;
if(n==1) t=0;
else
if(n==2)
t=1;
else
t=f(n-2)-2*f(n-1);
return(t);
}
相似回答