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

c語言上台階題

發布時間: 2022-10-02 19:52:21

c語言作業,用for循環 從一樓到二樓有20個台階,人一次只能走一個或兩個台階,從一樓到二樓有多少種走法

#include<stdio.h>
int c(int n)
{
if(n==1)return 1;
if(n==2)return 2;
return (c(n-1)+c(n-2));
}
int main()
{
printf("%d",c(20));
}
10946 公式c(n)=c(n-1)+c(n-2),c(1)=1,c(2)=2

Ⅱ C語言編程 台階問題

這是一道高精度的題目。
首先,題目要求每次允許上一個或兩個台階,實際上每個樓梯只要把前兩個樓梯的值相加就可以了(也可以認為是一個斐波那契數列),但是100個樓梯會超出long long 只能使用高精度了。

或者還可以使用通項公式(高中內容)

Ⅲ C語言 爬樓梯的問題

用遞歸解決比較方便:
#include<stdio.h>

int fibonacci (int n)
{
if (n > 2)
return fibonacci(n - 1) + fibonacci(n - 2);
else
return 1;
}

int main()
{
int data[20];
int t;
int i;

printf ("Please input T and the nums: \n");
scanf ("%d", &t);
for (i=0; i<t; i++)
{
scanf("%d", &data[i]);
}
printf("The output: \n");
for (i=0; i<t; i++)
{
printf("%d\n", fibonacci (data[i]+1));
}

return 0;
}
/* 這是斐波那契演算法的一個應用,你可以搜索一下 */

Ⅳ C語言 台階問題

1、void fun(char *pvDest, const char *pvSrc, unsigned int uiCopyLen)
{
int i =uiCopyLen;
char *src_P,*dest_P;
src_P = pvSrc;
dest_P = pvDest;
int len=strlen(pvSrc);
if(len >= uiCopyLen) {
for(i=0;i<uiCopyLen;i++)
{
*dest_P = *src_P;
src_P++;
dest_P++;
}
}
}

2、妨設有n階台階,既然一次只能走一步或2步或3步,那麼假設現在僅剩下最後一步要走,
有三種情況:
一 只需要走一步,這時已經走了(n-1)階,走法與走n-1階相同,有f(n-1)階走法;
二 只需要走兩步,同上分析有f(n-2);
三 只需要走三步,有f(n-3);
所以走n階台階有f(n)=f(n-1)+f(n-2)+f(n-3)種走法;
很明顯,走1階台階有1種方法;
走2階有兩種走法;
走3階有4種走法,如下:1 1 1 1 2 2 1 3;
所以我列出總台階數與走法的對應表:
1 2 3 4 5 6 7 8 9 10
1 2 4 7 13 24 44 81 149 274
所以有274種走法,是不是不可思議啊
程序實現如下:
unsigned int fun(unsigned int n)
{
if(n==1)
return 1;
else if(n==2)
return 2;
else if(n==3)
return 4;
else return fun(n-1)+fun(n-2)+fun(n-3);
}
另外,虛機團上產品團購,超級便宜

Ⅳ C語言問題,台階問題編程

#include<stdio.h>

intfuck(intn,intm)
{
if(n==1||n==0)return1;
if(n<0)return0;
inttotal=0;
inti=1;
for(;i<m;++i)
{
total+=fuck(n-i,m);
}
returntotal;
}
intmain()
{
inta;
scanf("%d",&a);
intn[a];
inti;
for(i=0;i<a;++i)
{
scanf("%d",&n[i]);
}
intb;
scanf("%d",&b);
intm[b];
for(i=0;i<a;++i)
{
scanf("%d",&n[i]);
}
for(i=0;i<a&&i<b;++i)
{
printf("%d",fuck(n[i],m[i]));
}
return0;
}

沒編譯器,你先編譯試試,應該沒錯

望採納~

Ⅵ c語言上台階答案

這個要用遞歸做。到某一階n有兩種可能,從第n-1上1階,從第n-2上2階,因此到達第n階的的函數f(n)的走法等於f(n-1)+f(n-2),即到達f(n-1)階的走法與f(n-2)階的走法之和!


代碼如下:


int f( int n )
{
if ( n == 1 )
{
return 1;
}
else if ( n == 2 )
{
return 2;
}
else
{
return f(n-1) + f(n-2);
}
}
int main()
{
int num = f( 10 );
return 0;
}


列印出num的值得話,可以看到10階共有89種走法。

Ⅶ c語言 設計 爬樓梯的方法

我是學pascal的~只說得上來演算法。
你說的爬樓梯是指有n階樓梯,每次可以上1,2……,p階(1<=p<=n),問走到最上面有多少種不同的走法吧?
這個就是遞推啊~
設上i級台階共有f(i)種不同的方法,很簡單就可以知道f(1)=1,f(2)=2…… 當i大於2時,分n種情況討論:第一步上了1級台階,第一步上了2級台階,……第一步上了n級台階。
如果第一步上了1級樓梯,那麼還剩下i-1級樓梯,要走完這i-1級樓梯,一共有f(i-1)種方法。
如果第一步上了2級樓梯,那麼還剩下i-2級樓梯,要走完這i-2級樓梯,一共有f(i-2)種方法。
……
如果第一步上了n級樓梯,那麼還剩下i-n級樓梯,要走完這i-2級樓梯,一共有f(i-n)種方法。

所以,在第一種情況下有f(i-1)種不同走法,第二種情況有f(i-2)種不同走法……這n種情況既沒有重復方案,也沒有遺漏,因此得出f(i)=f(i-1)+f(i-2)+……+f(i-n)

接著就行了,200階樓梯都不成問題。