Data_Structure/資料結構光碟檔/CH05/fibUsingIterative.c.txt

77 lines
1.6 KiB
Plaintext
Raw Normal View History

2025-01-20 21:25:33 +08:00
/*
file name: fibUsingIterative.c
Description: Fibonacci numbers count using iterative
<20>Q<EFBFBD>ΰj<CEB0><6A><EFBFBD>k<EFBFBD>p<EFBFBD><70><EFBFBD>O<EFBFBD><4F><EFBFBD>ƦC
<20>O<EFBFBD><4F><EFBFBD>ƦC<C6A6><43>0,1,1,2,3,5,8,13,21,<2C>K
<20><EFBFBD>Y<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD>M,<2C>B<EFBFBD><42>0<EFBFBD><30><EFBFBD><EFBFBD>0,<2C><>1<EFBFBD><31><EFBFBD><EFBFBD>1
*/
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
/* <20><><EFBFBD>ƭ쫬<C6AD>ŧi */
long Fibonacci(long);
void flushBuffer(void);
int main()
{
char ch;
long n;
printf("-----Fibonacci numbers Using Iterative-----");
do
{
printf("\nEnter a number(n >= 0): ");
scanf("%ld", &n);
flushBuffer();
/* n <20>Ȥj<C8A4><6A> 0 */
if ( n < 0 )
printf("Input number must be > 0!\n");
else
printf("Fibonacci(%ld) = %ld\n", n, Fibonacci(n));
printf("Continu(y/n)? ");
ch = toupper(getchar());
} while (ch == 'Y');
return 0;
}
long Fibonacci(long n)
{
long backitem1; /*<2A>e<EFBFBD>@<40><><EFBFBD><EFBFBD>*/
long backitem2; /*<2A>e<EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD>*/
long thisitem = 0; /*<2A>ثe<D8AB><65><EFBFBD>ƭ<EFBFBD>*/
long i;
if (n == 0) /* <20>O<EFBFBD><4F><EFBFBD>ƦC<C6A6><43>0<EFBFBD><30><EFBFBD><EFBFBD>0 */
return (0);
else if (n == 1) /* <20>ĤG<C4A4><47><EFBFBD><EFBFBD>1 */
return (1);
else {
backitem2 = 0;
backitem1 = 1;
/* <20>Q<EFBFBD>ΰj<CEB0><6A><EFBFBD>N<EFBFBD>e<EFBFBD>G<EFBFBD><47><EFBFBD>ۥ[<5B><><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>ثe<D8AB><65> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܫe<DCAB>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD>Ȧܨ<C8A6><DCA8><EFBFBD>n<EFBFBD><6E><EFBFBD>D<EFBFBD>o */
for (i = 2; i <= n; i++) {
/* F(i) = F(i-1) + F(i-2) */
thisitem = backitem1 + backitem2;
/*<2A><><EFBFBD>ܫe<DCAB>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
backitem2 = backitem1;
backitem1 = thisitem;
}
return thisitem;
}
}
void flushBuffer()
{
while (getchar() != '\n') {
continue;
}
}