2.c

来自「Fibonacci函数」· C语言 代码 · 共 83 行

C
83
字号
#include<stdio.h>
#include<stdlib.h>
struct queueNode {                          /*自引用结构*/
   int data;
   struct queueNode *nextPtr;
};

typedef struct queueNode QUEUENODE;
typedef QUEUENODE * QUEUENODEPTR;

/*函数原型*/
void printQueue(QUEUENODEPTR);
void enqueue(QUEUENODEPTR*,QUEUENODEPTR*,int);
int isEmpty(QUEUENODEPTR);
int Fibonacci(int);
main()
{
   QUEUENODEPTR headPtr=NULL,tailPtr=NULL;
   int k,max;
   int item,item2,i,j;
   printf("您想求几阶FIbonacci函数?");
   scanf("%d",&k);
   printf("请输入Fibonacci 函数的最大值:");
   scanf("%d",&max);
   for(i=0;i<=k+1;i++)
   {
	   j=i+1;
       item=Fibonacci( i);
	   item2=Fibonacci(j);
         if(item<=max)
		 {
			 enqueue(&headPtr,&tailPtr,item);
			 if(item2>max)
			 break;
		 }
   }
    printQueue(headPtr);
   return 0;
}
	


void enqueue(QUEUENODEPTR *headPtr,QUEUENODEPTR *tailPtr,int value)
{
	QUEUENODEPTR newPtr;
	newPtr=malloc (sizeof(QUEUENODEPTR));
	if(newPtr!=NULL){
		newPtr->data=value;
		newPtr->nextPtr=NULL;
		if(isEmpty(*headPtr))
			*headPtr=newPtr;
		else
			(*tailPtr)->nextPtr=newPtr;
		    *tailPtr=newPtr;
	}
	else
		printf("分配内存出错");
}
int isEmpty(QUEUENODEPTR headPtr)
{
	return headPtr==NULL;
}
void printQueue(QUEUENODEPTR currentPtr)
{
	if(currentPtr==NULL)
		printf("函数为空.\n\n");
		else{
		   printf("Fibonacci函数为:");
		   while(currentPtr!=NULL){
			   printf("%d--->",currentPtr->data);
               currentPtr=currentPtr->nextPtr;
		   }
		   printf("NULL\n\n");
	}
}
int  Fibonacci(int n)
{
	if(n==0||n==1)
		return n;
	else
		return Fibonacci(n-1)+Fibonacci(n-2);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?