3240: 第39级台阶
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 46 Solved: 17
[ Submit][ Status][ Web Board]
Description
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
Input
无
Output
某个整数
HINT
Source
答案:51167078
问题:不知道num时如何计数的
当n==0时,就说明已经没有台阶了,就要去判断走的步数是否为偶数,所以就有了if(step%22==0)判断语句,当走的步数为偶数时,num就做加1操作,然后就退出递归函数了,这样num不就只是加了一次嘛?怎么会有51167078
对这个递归调用并不理解,还需要更深一步来理解这道题目
逻辑思路并不清晰,自己对递归算法思路不明确
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int num=0;
void fun(int n,int step){
if(n<0)
return ;
if(n==0){
if(step%2==0)
num++;
return ;
}
fun(n-1,step+1);
fun(n-2,step+1);
}
int main(){
fun(39,0);
cout<<num<<endl;
}