请帮忙指出以下C++程序的失误,谢谢

2024-12-02 23:57:10
推荐回答(4个)
回答1:

#include
using namespace std;
int f(int n)//相当于数列的递推公式
{
if(n<=2)
return n; //加上这句就可以了
else
return 3*f(n-1)-f(n-2); //a(n+1)=3*a(n)-a(n-1)
}
int main()
{
for(int i=1;i<=8;i++)
{
if(i<=2)
{
cout<<"f("< }
else
{
cout<<"f("< }
}
return 0;
}

补充:对于递归的话,你一定要有让他退出的条件的。

回答2:

出现死循环了,当i=3时,执行到f(3) 因为 f() 中从没赋值f(0)f(1)f(2) 所以会一直执行下去。

回答3:

任何一个数列递推都要既有递推关系又要有初始条件。在递归函数内部也一样,需要初始条件和递推关系,因此递归函数这样
int f(int n)
{
if(n==1)
return 1;
if(n==2)
return 2;
if(n>=2)
return 3*f(n-1)-f(n-2);//a(n+1)=3*a(n)-a(n-1);
}
另外主函数就不必写if了

回答4:

//已知a1=1,a2=1,当n大于等于2时,a(n+1)=3*a(n)-a(n-1),逐步求出a1到a8
//您看这样对吗?
#include
using namespace std;
int f(int n)//相当于数列的递推公式
{
if (n==1||n==2)
{
return 1;
}
else
{
return 3*f(n-1)-f(n-2);//a(n+1)=3*a(n)-a(n-1)
}
}
int main()
{
for(int i=1;i<=8;i++)
{
if(i<=2)
{
cout<<"f("< }
else
{
cout<<"f("< }
}
return 0;
}