77 lines
1.6 KiB
Plaintext
77 lines
1.6 KiB
Plaintext
|
/*
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|