1. 程式人生 > >第三十九級臺階

第三十九級臺階

題目描述:

 第39級臺階

小明剛剛看完電影《第39級臺階》,離開電影院的時候,他數了數禮堂前的臺階數,恰好是39級!站在臺階前,他突然又想著一個問題:

如果我每一步只能邁上1個或2個臺階。先邁左腳,然後左右交替,最後一步是邁右腳,也就是說一共要走偶數步。那麼,上完39級臺階,有多少種不同的上法呢?

請你利用計算機的優勢,幫助小明尋找答案。

思考:

1.以“第幾級臺階”來作為向下遞迴的層次;

2.每一級臺階都有 走一步 和 走兩步 兩種情況;

3.每次遞歸回來,都要對總的步數和所在的臺階進行處理; 

程式碼

速度有點慢~~~

#include<stdio.h>

int total = 0, num = 0;					//total 總共走的臺階數/步數, num 代表有多少種走法;
int n = 39;

void steps(int cur);					//cur是第幾級臺階;

int main(void)
{
	int cur = 0;
	steps(cur);
	printf("num = %d\n", num);
	return 0;
}
void steps(int cur)
{
	if(total % 2 == 0 && cur == n)
	{
		num++;
	}
	if(cur > n)//
		return ;
	cur = cur + 1;						//走一步;
	total++;
	steps(cur);
	total--;
	cur--;

	cur = cur + 2;						//走兩步;
	total++;
	steps(cur);
	total--;
	cur = cur - 2;
}