當前位置:首頁 » 編程語言 » 遞歸c語言數列
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

遞歸c語言數列

發布時間: 2022-05-19 04:11:02

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&lt;stdio.h&gt;

int Fib(int n){//自定義函數

if(n&lt;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&gt;=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;

}