以下是用遞迴的方式寫的
/* * File Name: Fibonacci.c * Author: MH * Since 2011/05/16 * Toolkit: Dev C++ */ # include <stdlib.h> # include <stdio.h> int fib(int n){ if(n==0) return 0; if(n==1) return 1; return (fib(n-1)+fib(n-2)); } int main(){ int input, i; while(1){ printf("The 0th number is 0, and the first number is 1\n"); printf("ex : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233 ...\n\n"); printf("Please input an integer to show the last value of Fibonacci Sequence :\n"); scanf("%d", &input); printf("\n"); if(input<0) printf("\nInput cannot less than 0\n\n"); else{ for(i=0; i<=input; i++) printf("%d ", fib(i)); } printf("\n\n"); system("PAUSE"); system("CLS"); } return 0; }
不過當然也有用迴圈的方法寫的
/* * File Name: Fibonacci.c * Author: MH * Since 2011/05/16 * Toolkit: Dev C++ */ # include <stdlib.h> # include <stdio.h> int main(){ int n, i, n_2=0, n_1=1, fib; while(1){ printf("The 0th number is 0, and the first number is 1\n"); printf("ex : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233 ...\n\n"); printf("Please input an integer to show the last value of Fibonacci Sequence :\n"); scanf("%d", &n); printf("\n"); if (n == 0) fib = n_2; else if (n == 1) fib = n_1; else{ for (i=2; i<=n; i++) { fib = n_2 + n_1; n_2 = n_1; n_1 = fib; } n_2 = 0; n_1 = 1; } printf("The Fibonacci Sequence is %d\n\n", fib); system("PAUSE"); system("CLS"); } return 0; }
感謝!!
回覆刪除