/*
思路:
<span style="white-space:pre"> </span>建立循环链表并创建3个结点,在递归函数中node3.data=node2.deta+node1.data
*/
#include<iostream>
using namespace std;
typedef struct Node
{
int data;
Node* next;
};
class List
{
public:
List(int val = 1) :len(0)
{
node = new Node();
node->data = val;
node->next = NULL;
}
void add(int val)
{
int i = 0;
if (len == 0)
{
this->node->data = val;
node->next = node;
len = 1;
return;
}
Node *newNode = new Node();
newNode->data = val;
Node *tmp = node;
while (tmp->next!=node)
{
tmp = tmp->next;
i++;
}
tmp->next = newNode;
newNode->next = node;
len++;
}
Node* getHead(){ return node; }
int getLen(){ return len; }
void show()
{
int i = 0;
Node *tmp = node;
for (; i < len; i++)
{
cout << tmp->data << " ";
tmp = tmp->next;
}
cout << endl;
}
~List()
{
delete(node);
node = NULL;
}
private:
int len;
Node *node;
};
//1,1,2,3,5,8,13,21,34,55
int fab(Node *node, int n)
{
if (n == 1 || n == 2)
return node->data;
node = node->next;
node->data = node->next->data + node->next->next->data;
fab(node, n - 1);
}
int main()
{
List list;
for (int i = 0; i < 3; i++)
list.add(1);
//list.show();
int fabRst = fab(list.getHead(), 1);
cout << fabRst << endl;
return 0;
}