#include<stdio.h>
#include<iostream.h>
#include<malloc.h>
#include<cstdlib>
#include<math.h>
#include<string>
#define MAXSIZE 100
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct LNode
{
int data;
struct LNode *next;
}*LinkList,LNode;
Status InitList(LinkList &L)
{
L=(LinkList)malloc(sizeof(LNode));
if(!L) return ERROR;
L->next=NULL;
return OK;
}
Status CreateList(LinkList &L)
{
LNode *p;p=L;
for(int i=0;i<10;i++)
{
p->next=(LinkList)malloc(sizeof(LNode));
p=p->next;
p->data=i+1;
}
p->next=NULL;
return OK;
}
long Factorial(int n)
{
if(n==0) return 1;
else return n*Factorial(n-1);
}
long Fibonacci(int n)
{
if(n==1||n==2) return 1;
else return Fibonacci(n-1)+Fibonacci(n-2);
}
void ListTraverse(LinkList p)
{
if(p)
{
cout<<p->data<<endl;
ListTraverse(p->next);
}
}
void main()
{
int a=4;
LinkList L;
InitList(L);
CreateList(L);
cout<<Factorial(a)<<endl;
cout<<Fibonacci(a)<<endl;
cout<<"递归遍历链表:"<<endl;
ListTraverse(L->next);
}