① c语言:采用递归调用函数方法计算Fibonacci数列的前20项
#include<iostream.h>
#include<iomanip.h>
long fibonacci(long,int);
void main(void)
{
int n;
cout<<"please input"n"";
cin>>n;
cout<<endl;
if(fibonacci(n,1)==-1)cout<<"error message:n<0";
}
long fibonacci(long number,int out)
{
if(number<0)
return-1;//return error message
else if(number==0)
return 0;
else if(number==1)
{
if(out)
cout<<number<<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<<lVal<<setw(5);
return lVal;
}
}
(1)递归c语言数列扩展阅读:
斐波那契数列是一组第一位和第二位为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<3)
{
return 1;
}
else
{
for(i=0;i>n-3;i++)
{
tmp=num1+num2;
num1=num2;
num2=tmp;
}
return tmp;
}
}
3.数组
public int Fibno3(int n)
{
List<int>list=new List<int>();
list.fib(1);
list.fib(1);
int count=list.Count;
while(count<n)
{
list.fib(list[count-2]+list[count-1]);
count=list.Count;
}
return list[count-1];
}
4.队列
public int Fibno4(int n)
{
Queue<int>queue=new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(1);
for(int i=0;i<=n-2;i++)
{
queue.Enqueue(queue.AsQueryable().First()+queue.AsQueryable().Last());
queue.Dequeue();
}
return queue.Peek();
}
② 用C语言递归的方法编写程序求斐不拉契数列之和(n个数之和)
#include<stdio.h>
intFibonacci(intn)
{
if(n==1||n==2)//递归结束的条件,求前两项
return1;
else
returnFibonacci(n-1)+Fibonacci(n-2);//如果是求其它项,先要求出它前面两项,然后做和。
}
intmain()
{
intn,s=0,i;
printf("pleaseinputn:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=s+Fibonacci(i);
}
printf("Result:%d ",s);
return0;
}
③ 我想用递归写斐波那契数列,c语言
代码:
#include<stdio.h>
int Fib(int n){//自定义函数
if(n<0)
return-1;
else if(n==0)
return 0;
else if(n==1)
return 1;
else
return Fib(n-1)+Fib(n-2);
}
int main(){
int num;
printf("请输入要求取的第n项斐波那契数列n=");
if(scanf("%d",&num)){
if(num>=0){
printf("%d",Fib(num));
}
else
printf("Error!!!");
return 0;
}
return 0;
}
(3)递归c语言数列扩展阅读:
斐波那契数列排列组合
有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法
这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……
1,2,3,5,8,13……所以,登上十级,有89种走法。
类似的,一枚均匀的硬币掷10次,问不连续出现正面的可能情形有多少种?
答案是(1/√5)*{[(1+√5)/2]^(10+2)-[(1-√5)/2]^(10+2)}=144种。
求递推数列a⑴=1,a(n+1)=1+1/a(n)的通项公式
由数学归纳法可以得到:a(n)=F(n+1)/F(n),将斐波那契数列的通项式代入,化简就得结果。
④ C语言数组复杂的递归问题
#include<stdio.h>
#include<string.h>
int rev(char *s,int min,int max)
{ char temp;
if(min>=max) return 1;
else
{ temp=s[min]; s[min]=s[max]; s[max]=temp;
printf("%s\n",s);
rev(s,min+1,max-1);
}
return 0;
}
void main()
{ char str[100];
int count=0,n;
printf("\ninout:");
scanf("%d %s",&n,str);
rev(str,0,strlen(str)-1);
printf("\n最终结果:%s\n",str);
}
⑤ c语言数组递归
递归过程中每次调用函数时形参p对应的实参都不同
⑥ C语言编程:用函数递归法求Fibonacci数列的前n项·
#include
<stdio.h>
#define
COL
10
//一行输出10个
long
scan()
{
//输入求fibonacci函数的第N项
int
n;
printf("Input
the
N
=
");
scanf("%d",&n);
return
n;
}
long
fibonacci(int
n)
{
//fibonacci函数的递归函数
if
(0==n||1==n)
{
//fibonacci函数递归的出口
return
1;
}
else
{
return
fibonacci(n-1)+fibonacci(n-2);
//反复递归自身函数直到碰到出口处再返回就能计算出第n项的值
}
}
int
main(void)
{
int
i,n;
n
=
scan();
printf("Fibonacci数列的前%d项\n",
n);
for
(i=0;
i<n;)
//输出fibonacci函数前n项每项的值
{
printf("%-10ld",fibonacci(i++));
//调用递归函数并且打印出返回值
if(i%COL==0)
{
//若对COL取余等于0就换行,也就是控制每行输出多少个,
//而COL=10就是每行输出10个
printf("\n");
}
}
printf("\n");
return
0;
}
⑦ C语言用递归方法计算斐波那契数列
#include
int
fun(int
n)
{
if(
n
==
1
||
n
==
2)
//
递归结束百的条件,求前两项度
return
1;
else
return
fun(n-1)+
fun(n-2);
//
如果是求其它项知,先要求出它道前面两项,然后版内做和。
}
int
main()
{
int
n;
printf("please
input
n:
");
scanf("%d",&n);
printf("Result:
%d\n",
fun(n));
return
0;
}
哪儿不明白容就继续追问权
⑧ 用c语言程序设计来实现使用递归函数来打印斐波纳契数列。
#include
<stdio.h>
void
main()
{
int
i,a[21];
a[1]=1;
a[2]=1;
for(i=3;i<=20;i++)
a[i]=a[i-1]+a[i-2];
for(i=1;i<=20;i++)
{
printf("%12d",a[i]);
if(i%5==0)//这样可以五个打一行
printf("\n");
}
}
这个是前二十个的,你要是想打印他的多少项就直接改下就行了
⑨ c语言编程,用递归实现Fibonacci数列
#include<stdio.h>
#define N 20
int Fibonacci(int n)
{
if(n == 1 || n==2)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
void main()
{
int i = 0;
for(i=1;i<=N;i++)
{
printf("%5d",Fibonacci(i));
if(i%5 == 0)
printf("\n");
}
printf("\n");
}
只要修改宏定义N的值,就可以输出斐波那契数列的前N项。
⑩ C语言 求 数列函数(用递归)
#include <stdio.h>
int fun(int n)
{
if(n==0)
return 0;
return n%2?2*fun(n-1)+1:2*fun(n-1)-1;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d ",fun(n));
return 0;
}