2017-03-02 21 views
1

私は再帰的フィボナッチCで - 無地シンプル

#include <stdio.h> 

int fibonacci(int); 

int main(int argc, char *argv[]){ 

    int option; 
    printf("1- Calculate Fibonacci\n"); 
    printf("2- Exit\n"); 
    scanf("%d", &option); 

    if(option == 1){ 

    int limit; 
    printf("Enter and integer: "); 
    scanf("%d", &limit); 

    printf("The Fibonacci sequence is : \n"); 

    fibonacci(limit); 

    }else if(option == 2){ 
     return 0; 
    }else{ 
     printf("Please select your option : 1 or 2.\n"); 
    } 

    return 0; 
} 


int fibonacci(int n){ 

    if (n == 0) 
     return 0; 
    else if (n == 1) 
     return 1; 
    else 
     return (fibonacci(n-1) + fibonacci(n-2)); 
} 

コンパイルした後持って

Cに書き込みに再帰フィボナッチを()しようとしている、と実行は私が

を得ました
./a.out 
1- Calculate Fibonacci 
2- Exit 
1 
Enter and integer: 5 
The Fibonacci sequence is : 

I nこれまでに私の番号をプリントアウトする。

私が忘れたことに関するヒントはありますか?

+0

私はフォークを使って多くのタイトルを見たので、フォークを使わずに作成しました。 – ihue

+1

3階から窓から飛び出してくる人がたくさんいますが、あなたも飛びますか? ;-) –

+0

注: 'return(fibonacci(n-1)+ fibonacci(n-2));'で、 'n'を入力すると、コードは' O(fibonacci(n)) '再帰呼び出しを行います。 'Fib(n)'と 'Fib(n-1)'を検索するヘルパー関数を作ることで、コードは 'n'回帰呼び出しを行うだけです。 'n = 40'の場合、これは約330,000,000コール対40です。あなたの' print'問題が修正されたら、n = 46を試してください - 長い時間がかかります。 – chux

答えて

3

置き換えます

printf("The Fibonacci sequence is : %d \n",fibonacci(limit)); 

または

int result; 
result = fibonacci(limit); 
printf("The Fibonacci sequence is : %d \n",result); 
3

fibonacci(limit);あなたのコードが理論的に「動作」していても、何も印刷されません。

+1

ありがとうございます。 'printf("%d "、fibonacci(limit));'私の問題を解決しました。 – ihue

2

fibonacci(int)メソッドで何も印刷しません。

0
fibonacci(limit); 

printf("The Fibonacci sequence is : \n"); 

fibonacci(limit); 

をこの行は何も印刷されていない、あなたには、いくつかの変数にいくつかの結果であなたの答えを返しますか、単にで印刷してください