C语言:采用递归调用函数方法计算Fibonacci数列的前20项

C语言编程:用函数递归法求Fibonacci数列的前n项·~

#include
long int F(int n)
{
if (n==1||!n) {
return n;
}
else return F(n-1)+F(n-2);
}
int main(void)
{
int i,n;
printf("n=");
scanf("%d",&n);
for (i=0; i<n; i++) {
printf("%-10ld",F(i));
}
return 0;
}

在数理逻辑和计算机科学中
递归函数或μ-递归函数是一类从自然数到自然数的函数,它是在某种直觉意义上是"可计算的" 。事实上,在可计算性理论中证明了递归函数精确的是图灵机的可计算函数。递归函数有关于原始递归函数,并且它们的归纳定义(见下)建造在原始递归函数之上。但是,不是所有递归函数都是原始递归函数 — 最著名的这种函数是阿克曼函数。
以上内容参考:百度百科-递归函数

#include
long func(long n)
{
if(n==0||n==1)return n;
else return func(n-1)+func(n-2);
}
main()
{
long n;
printf("please input n:");
scanf("%ld",&n);
printf("the result is %ld",func(n));
}

#include&lt;iostream.h&gt;

#include&lt;iomanip.h&gt;

long fibonacci(long,int);

void main(void)

{

int n;

cout&lt;&lt;"please input\"n\"";

cin&gt;&gt;n;

cout&lt;&lt;endl;

if(fibonacci(n,1)==-1)cout&lt;&lt;"error message:n&lt;0";

}

long fibonacci(long number,int out)

{

if(number&lt;0)

return-1;//return error message

else if(number==0)

return 0;

else if(number==1)

{

if(out)

cout&lt;&lt;number&lt;&lt;setw(5);

return 1;

}

else

{

long lVal;

if(out)

lVal=fibonacci(number-2,0)+fibonacci(number-1,1);

else

lVal=fibonacci(number-2,0)+fibonacci(number-1,0);

if(out)

cout&lt;&lt;lVal&lt;&lt;setw(5);

return lVal;

}

}

扩展资料:

斐波那契数列是一组第一位和第二位为1,从第三位开始,后一位是前两位和的一组递增数列,

像这样的:1、1、2、3、5、8、13、21、34、55......

今天,用四种方式来进行实现:

1.递归

int Fibon1(int n)

{

if(n==1||n==2)

{

return 1;

}

else

{

return Fibon1(n-1)+Fibon1(n-2);

}

}

int main()

{

int n=0;

int ret=0;

scanf("%d",&n);

ret=Fibon1(n);

printf("ret=%d",ret);

return 0;

}

2.非递归

int Fibno2(int n)

{

int num1=1;

int num2=1;

int tmp=0;

int i=0;

if(n&lt;3)

{

return 1;

}

else

{

for(i=0;i&gt;n-3;i++)

{

tmp=num1+num2;

num1=num2;

num2=tmp;

}

return tmp;

}

}

3.数组

public int Fibno3(int n)

{

List&lt;int&gt;list=new List&lt;int&gt;();

list.fib(1);

list.fib(1);

int count=list.Count;

while(count&lt;n)

{

list.fib(list[count-2]+list[count-1]);

count=list.Count;

}

return list[count-1];

}

4.队列

public int Fibno4(int n)

{

Queue&lt;int&gt;queue=new Queue&lt;int&gt;();

queue.Enqueue(1);

queue.Enqueue(1);

for(int i=0;i&lt;=n-2;i++)

{

queue.Enqueue(queue.AsQueryable().First()+queue.AsQueryable().Last());

queue.Dequeue();

}

return queue.Peek();

}

参考资料:

百度百科——斐波那契数列



使用递归进行操作时,关键是设置好递归条件。斐波那契数列的定义如下:

 f2 = f0 + f1 = 0 + 1 = 1,所以条件可以设置成当n==1或者n==2时,返回1。其它项则依次递归调用即可。

#include <stdio.h>
int f(int n){
if(n==1 || n==2)
return 1;
else
return (f(n-2)+f(n-1));
}
int main(){
const int num = 20;
int i;
for(i=1;i<=num;i++){
printf("%-6d",f(i));
if(i%5==0)
printf("
");
}
printf("
");
return 0;
}



#include <stdio.h>
#define N 20
main(){
int f(int n);
int i;
for(i=1;i<=N;i++){
printf("%-6d",f(i));
if(i%5==0)
printf("\n");
}
printf("\n");
}

int f(int n){
if(n==1 || n==2)
return 1;
else
return (f(n-2)+f(n-1));
}

long fibonacci(int n)
{ long t;
if (n=2)
{ t=1;
return t;
}
if (n=1)
{ t=1;
return t;
}
t=fibonacci(n-1)+fibonacci(n-2);
return t;

}

1、没有调试;
2、主 函数 自己 写;

#include <stdio.h>
#define N 20
main(){
int f(int n);
int i;
for(i=1;i<=N;i++){
printf("%-6d",f(i));
if(i%5==0)
printf("\n");
}
printf("\n");
}

int f(int n){
if(n==1 || n==2)
return 1;
else
return (f(n-2)+f(n-1));
}

c语言函数递归(实现原理与应用场景)
答:1.函数调用自身,将问题分解成更小的子问题。2.子问题可以通过调用函数本身来解决。3.当子问题足够简单时,可以直接解决,不需要再次调用函数本身。4.将子问题的解合并成原问题的解。递归函数的实现原理可以用一个经典的例子来解释:阶乘函数。阶乘是指将一个整数n乘以n-1乘以n-2乘以...1,即n!。

c语言怎么用递归调用函数的方法求n的阶乘?
答:1、打开VC6.0软件,新建一个C语言的项目:2、接下来编写主程序,首先定义用来求阶乘的递归函数以及主函数。在main函数里定义变量sum求和,调用递归函数fact(),并将返回值赋予sum,最后使用printf打印sum的结果,主程序就编写完了:3、最后运行程序,观察输出的结果。以上就是C语言使用递归求阶乘的写法:...

编写程序 用C语言。。用递归法并用函数调用方式将整型数组a中的前k...
答:void main(){ void reverse(int *ptr, int left, int right);void swap(int *ptr, int a, int b);int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int k = 0;int left = 0, right = 9;printf("请输入需要逆置的个数:\n");scanf("%d", &k);right = k - 1;...

在C语言中用递归调用的方法求n!
答:-》5*(4*(3*(2*Func(1)))当n为0的时候停止递归,返回结果 由于遇到1的时候返回1,那么Func(1)=1 所以结果是5*(4*(3*(2*1))) = 120

c语言 函数递归调用的简单例子
答:举一个用递归调用函数求输入非负整数的阶乘的例子,如下://#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"int fact(int n){ if(n==1 || n==0) return 1; else return n*fact(n-1);}int main(void){ int x; while(1){ printf("I...

c语言:采用递归方法实现将输入的字符串按反序输出
答:以下是使用递归方法实现将输入字符串按反序输出的 C 语言程序:```c include <stdio.h> // 递归函数,将字符串 str 按反序输出 void printReverse(char *str) { if (*str == '\0') { // 判断是否到达字符串结尾 return;} else { printReverse(str + 1); // 递归调用,输出下一...

C语言编程:用函数递归法求Fibonacci数列的前n项·
答:long int F(int n){ if (n==1||!n) { return n;} else return F(n-1)+F(n-2);} int main(void){ int i,n;printf("n=");scanf("%d",&n);for (i=0; i<n; i++) { printf("%-10ld",F(i));} return 0;} 在数理逻辑和计算机科学中 递归函数或μ-递归函数是一类...

C语言函数的递归调用
答:先调用函数f,然后把返回值赋值给z。不过这个函数不对,没有退出条件,无法停止。举例说明吧 int f(int x){ if(x==0){ return 1;} else { return x*f(x-1);} } 假如f(3)那么 第一次f(3):x!=0,调用f(2)第二次f(2):x!=0,调用f(1)第三次f(1):x!=0,调用f(0...

c语言函数的递归调用
答:这段程序的意思是对传来的参数n,如果n<1,程序会崩溃;如果n>1则没大1,返回就多2,最后必然会执行c=10。比如n=5,则返回的是18((5-1)x2+10=18)比如说做了5次递归,即n=5;执行的操作如下:第1次调用(n=5) ,定义了一个intc;第2次调用(n=4) ,定义了一个intc;第3次调用...

C语言编写: 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出 ...
答:include<conio.h> include<stdio.h> void reverse(int i){ char c;if(i>0){c=getch();reverse(i-1);printf(" %c ",c);} } main(){ reverse(5);}

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网