C-plainsimple中的递归Fibonacci
我正在尝试用c编写一个递归的fibonacci() 我有C-plainsimple中的递归Fibonacci,c,C,我正在尝试用c编写一个递归的fibonacci() 我有 #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 l
#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) );
}
我从不把我的号码打印出来
我忘了什么,有什么线索吗 斐波那契(极限)代码>不会打印任何内容,即使您的代码理论上“工作正常”。
fibonacci(限制)代码>不会打印任何内容,即使您的代码在理论上“工作”。您不会使用斐波那契(int)方法打印任何内容 在斐波那契(int)方法中不打印任何内容 替换:
printf("The Fibonacci sequence is : \n");
fibonacci(limit);
与
或
替换:
printf("The Fibonacci sequence is : \n");
fibonacci(limit);
与
或
此行没有打印任何内容,您可以在某个变量的某个结果中返回您的答案,或者通过printf(“%d”,fibonacci(limit)),简单地打印它代码>
此行没有打印任何内容,您可以在某个变量的某个结果中返回您的答案,或者通过printf(“%d”,fibonacci(limit)),简单地打印它代码>谢谢<代码>printf(“%d”,斐波那契(极限))代码>解决了我的问题。谢谢<代码>printf(“%d”,斐波那契(极限))代码>解决了我的问题。我看到很多标题使用了fork,所以我没有使用fork创建了一个标题。因此,如果你看到很多人从三楼跳出窗外,你也会跳?;-)注:带return(fibonacci(n-1)+fibonacci(n-2))代码>,并输入n
,代码将进行关于O(fibonacci(n))
的递归调用。通过创建一个helper函数来检索Fib(n)
和Fib(n-1)
,代码只需要进行大约n
递归调用。如果n=40
,这大约是330000000次呼叫,而不是40次。一旦你的print
问题得到解决,请尝试n=46-这需要很长时间。我看到很多标题使用fork,所以我创建了一个标题而没有使用fork。因此,如果你看到很多人从三楼跳出窗外,你也会跳?;-)注:带return(fibonacci(n-1)+fibonacci(n-2))代码>,并输入n
,代码将进行关于O(fibonacci(n))
的递归调用。通过创建一个helper函数来检索Fib(n)
和Fib(n-1)
,代码只需要进行大约n
递归调用。如果n=40
,这大约是330000000次呼叫,而不是40次。一旦您的打印问题得到解决,请尝试n=46-需要很长时间。
printf("The Fibonacci sequence is : %d \n",fibonacci(limit));
int result;
result = fibonacci(limit);
printf("The Fibonacci sequence is : %d \n",result);
fibonacci(limit);