打印菱形以及斐波納契數(shù)列的幾種解法介紹
來源:易賢網(wǎng) 閱讀:708 次 日期:2014-09-05 14:52:14
溫馨提示:易賢網(wǎng)小編為您整理了“打印菱形以及斐波納契數(shù)列的幾種解法介紹”,方便廣大網(wǎng)友查閱!

1、編寫程序,打印*菱形

推出第i行要打印的空白個數(shù)及*號個數(shù),用for循環(huán)依次打印各行

代碼如下:

#include<stdio.h>

//總共要打印2*n-1行,逐行打印

void print1(int n)

{

int i,j;

for(i=1;i<=n;i++){//打印1至n行

for(j=1;j<=n-i;j++)//打印n-i個空格

printf(" ");

for(j=1;j<=2*i-1;j++)//打印2*i-1個*號

printf("*");

printf("n");

}

for(;i<2*n;i++){//打印n+1至2*n-1行,同(2*n-i)行

for(j=1;j<=n-(2*n-i);j++)

printf(" ");

for(j=1;j<=2*(2*n-i)-1;j++)

printf("*");

printf("n");

}

}

void main()

{

int n;//n是菱形邊上*號的個數(shù)

printf("enter n:");

scanf("%d",&n);

print1(n);

}

2、斐波納契數(shù)列(Fibonacci Sequence),又稱黃金分割數(shù)列,指的是這樣一個數(shù)列:

1、1、2、3、5、8、13、21、……在數(shù)學(xué)上,斐波納契數(shù)列以如下被以遞歸的方法定義:F(0)=0,F(xiàn)(1)=1,F(xiàn)(n)=F(n-1)+F(n-2)(n>=2,n∈N*).編寫程序,輸出F(20)的值。

這里給出四種不同的解法,注意遞歸和改進的遞歸效率上有很大區(qū)別。

代碼如下:

#include<stdio.h>

#include<math.h>

#include<time.h>

#define MAX 100

//遞歸

int f1(int n)

{

if(n==1 || n==0)

return 1;

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

}

//改進版的遞歸,去除重復(fù)計算

int f2(int n)

{

//保存中間結(jié)果的數(shù)組

static result[MAX]={1,1};

if(n==1 || n==0)

return 1;

if(result[n-1] == 0)

result[n-1]=f2(n-1);

if(result[n-2] == 0)

result[n-2]=f2(n-2);

return result[n-1]+result[n-2];

}

//用數(shù)組保存中間結(jié)果(來自陳孝杰)

int f3(int n)

{

int a[MAX],i;

a[1]=1;

a[0]=1;

for(i=2;i<=n;i++)

a[i]=a[i-1]+a[i-2];

return a[n];

}

//迭代

int f4(int n)

{

int i=2,a=1,b=1,sum=1;

while(i<=n){

sum=a+b;

a=b;

b=sum;

i++;

}

return sum;

}

void main()

{

long start,end;

start=clock();

printf("f(40)==%dn",f1(40));

end=clock();

printf("用時:%d msn",end-start);

start=clock();

printf("f(40)==%dn",f2(40));

end=clock();

printf("用時:%d msn",end-start);

start=clock();

printf("f(20)==%dn",f3(20));

end=clock();

printf("用時:%d msn",end-start);

start=clock();

printf("f(20)==%dn",f4(20));

end=clock();

printf("用時:%d msn",end-start);

}

運行結(jié)果:

名單

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機網(wǎng)站地址:打印菱形以及斐波納契數(shù)列的幾種解法介紹

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)