C++题目两道!~在线跪求~~
1.分别写出下列函数的递归算法和非递归算法,并求出n=10时的函数值。Fib(n)=n当n=0或n=1Fib(n-2)+Fib(n-1)当n22.假设以带...
1.分别写出下列函数的递归算法和非递归算法,并求出n=10时的函数值。
Fib(n)= n 当n=0或n=1
Fib(n-2)+Fib(n-1) 当n2
2. 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点而不设头指针,试编写相应的队列初始化、入队列、出队列和判断队列状态的算法。
利用上述算法完成下面的各操作,并在每一操作后输出队列状态。
1)下列元素逐一入队:5,7,3,8,55 状态:5个元素
2) 3个元素出队 状态:2个元素
3)再2个元素出队 状态:队空
4)再1个元素出队 状态:队空(指示下溢) 展开
Fib(n)= n 当n=0或n=1
Fib(n-2)+Fib(n-1) 当n2
2. 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点而不设头指针,试编写相应的队列初始化、入队列、出队列和判断队列状态的算法。
利用上述算法完成下面的各操作,并在每一操作后输出队列状态。
1)下列元素逐一入队:5,7,3,8,55 状态:5个元素
2) 3个元素出队 状态:2个元素
3)再2个元素出队 状态:队空
4)再1个元素出队 状态:队空(指示下溢) 展开
4个回答
展开全部
#include <iostream>
using namespace std;
int F1(int n);//递归
int F2(int n);//非递归
void main()
{
cout<<F1(5)<<" "<<F2(5)<<endl;
}
int F1(int n)
{
if(n==0||n==1)
return 1;
else
return F1(n-2)+ F1(n-1);
}
int F2(int n)
{
int i;
int a=0,b=1,c,t;
for(i=1;i<=n;i++)
{
c=a+b;
a=b;
b=c;
}
return c;
}
#include <iostream>
using namespace std;
struct node
{
int data;
node *next;
};
class LB
{
private:
node *tail;
public:
LB()
{
node *c=new node;
c->next=c;//代表为空
tail=c;
}
void insert(int n)
{
node *c=new node;
c->data=n;//赋值
c->next=tail->next;
tail->next=c;
tail=c;////原来的尾部指向新的尾部
}
void del()
{
//队礼先进先出,删除第一个结点(非头结点)
node *h=tail->next;
node *t;
if(h==h->next)
cout<<"Error"<<endl;//已经为空
else
{
t= h->next;//第一个元素
h->next=h->next->next;//修改连接
delete t;//删除
if(h==h->next)
tail=h;
}
}
void stats()
{
node *h=tail->next;
int count=0;
if(h==h->next)
cout<<"Empty"<<endl;//空
else
{
do
{
h=h->next;
count++;
//cout<<h->data<<" ";//输出元素
}
while(h!=tail);
cout<<"Nodes: "<<count<<endl;
}
}
};
void main()
{
LB a;
a.stats();
a.insert(5);
a.insert(7);
a.insert(3);
a.insert(8);
a.insert(55);
a.stats();
a.del();
a.del();
a.del();
a.stats();
a.del();
a.del();
a.stats();
a.del();
a.stats();
}
using namespace std;
int F1(int n);//递归
int F2(int n);//非递归
void main()
{
cout<<F1(5)<<" "<<F2(5)<<endl;
}
int F1(int n)
{
if(n==0||n==1)
return 1;
else
return F1(n-2)+ F1(n-1);
}
int F2(int n)
{
int i;
int a=0,b=1,c,t;
for(i=1;i<=n;i++)
{
c=a+b;
a=b;
b=c;
}
return c;
}
#include <iostream>
using namespace std;
struct node
{
int data;
node *next;
};
class LB
{
private:
node *tail;
public:
LB()
{
node *c=new node;
c->next=c;//代表为空
tail=c;
}
void insert(int n)
{
node *c=new node;
c->data=n;//赋值
c->next=tail->next;
tail->next=c;
tail=c;////原来的尾部指向新的尾部
}
void del()
{
//队礼先进先出,删除第一个结点(非头结点)
node *h=tail->next;
node *t;
if(h==h->next)
cout<<"Error"<<endl;//已经为空
else
{
t= h->next;//第一个元素
h->next=h->next->next;//修改连接
delete t;//删除
if(h==h->next)
tail=h;
}
}
void stats()
{
node *h=tail->next;
int count=0;
if(h==h->next)
cout<<"Empty"<<endl;//空
else
{
do
{
h=h->next;
count++;
//cout<<h->data<<" ";//输出元素
}
while(h!=tail);
cout<<"Nodes: "<<count<<endl;
}
}
};
void main()
{
LB a;
a.stats();
a.insert(5);
a.insert(7);
a.insert(3);
a.insert(8);
a.insert(55);
a.stats();
a.del();
a.del();
a.del();
a.stats();
a.del();
a.del();
a.stats();
a.del();
a.stats();
}
展开全部
作个记号 方便答案出来后找到 大家一起学习
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream.h>
long F(unsigned n)
{ if(n==0||n==1)
return 1;
else
return F(n-2)+ F(n-1);
}
void main()
{
cout<<F(10)<<endl;
}
非递归算法的话
搞一个循环就可以了。for statement.
long F(unsigned n)
{ if(n==0||n==1)
return 1;
else
return F(n-2)+ F(n-1);
}
void main()
{
cout<<F(10)<<endl;
}
非递归算法的话
搞一个循环就可以了。for statement.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询