# 斐波那契数（C/C++，Scheme）

2015/09/08 21:45

f0=0

f1=1

fi=fi1+fi2(i>1)

## 二、分析

1.递归

(factorial 6)
(* 6 (factorial 5))
(* 6 (* 5 (factorial 4)))
(* 6 (* 5 (* 4 (factorial 3))))
(* 6 (* 5 (* 4 (* 3 (factorial 2)))))
(* 6 (* 5 (* 4 (* 3 (2 (factorial 1))))))
(* 6 (* 5 (* 4 (* 3 (* 2 1)))))
(* 6 (* 5 (* 4 （* 3 2)))) (* 6 (* 5 (* 4 6))) (* 6 (* 5 24)) (* 6 120) 720

2.迭代

(factorial 6)
(factorial 1 1 6)
(factorial 1 2 6)
(factorial 2 3 6)
(factorial 6 4 6)
(factorial 24 5 6)
(factorial 120 6 6)
(factorial 720 7 6)
720

product <- counter * product
counter < - counter + 1

## 三、代码

C语言版

#include <stdio.h>
#include <stdlib.h>

int factorialRecursive(int n);
int factorialIteration(int product, int counter, int max_count);

int main()
{
int n;
printf("Enter an integer: \n");
scanf("%d",&n);

printf("%d\n",factorialRecursive(n));
printf("%d\n",factorialIteration(1,1,n));

return 0;
}

int factorialRecursive(int n)
{
int sum=1;
if(n==1)
sum*=1;
else
sum=n*factorialRecursive(n-1);
return sum;
}

int factorialIteration(int product, int counter, int max_count)
{
int sum=1;
if(counter>max_count)
sum*=product;
else
factorialIteration((counter*product),(counter+1),max_count);
}

C++语言版

#include <iostream>

using namespace std;

int factorialRecursive(int n);
int factorialIteration(int product, int counter, int max_count);

int main()
{
int n;
cout<<"Enter an integer:"<<endl;
cin>>n;
cout<<factorialRecursive(n)<<endl;
cout<<factorialIteration(1,1,n)<<endl;

return 0;
}

int factorialRecursive(int n)
{
int sum=1;
if(n==1)
sum*=1;
else
sum=n*factorialRecursive(n-1);
return sum;
}

int factorialIteration(int product, int counter, int max_count)
{
int sum=1;
if(counter>max_count)
sum*=product;
else
factorialIteration((counter*product),(counter+1),max_count);
}

## 四、进阶

Scheme语言版

(define (factorial n) (if (= n 1) 1 (* n (factorial (- n 1)))))
(define (factorial n) (fact-iter 1 1 n))
(define (fact-iter product counter max-count) (if (> counter max-count) product (fact-iter (* counter product) (+ counter 1) max-counter)))

http://blog.csdn.net/nomasp

0
0 收藏

0 评论
0 收藏
0