数据结构--斐波那契数列的非重复递归实现

来源:互联网 发布:ai设计软件formac 编辑:程序博客网 时间:2024/06/05 19:50
/*
思路:
<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,55int 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;}

0 0