十级台阶走法(递归法)

探讨如何使用递归算法解决十级台阶的不同走法问题,每步可以跨1级或2级台阶。
摘要由CSDN通过智能技术生成

十级台阶,一次跨一步,二步,有多少种走法?

// stairs.cpp : Defines the entry point for the console application. //

#include "stdafx.h" #include <iostream> using namespace std;

/* //递归 int step(int n) {  if (n<=0) return 0;  if (n==1) return 1;  if (n==2) return 2;  if (n>2) return step(n-1)+step(n-2); } */ int combination(int n, int m) {  int prod=1;  for (int i=n;i>n-m;i--)  {   prod*=i;  }  for(int i=1;i<=m;i++)  {   prod/=i;  }  return prod; } //非递归 int step(int n) {  int m=0;   //二的个数;  int twos=0;//二的和  int sum=0;

 while(twos<=n)  {     sum=sum+combination(n-m,m);     m++;     twos=m*2;  }  return sum; }

int _tmain(int argc, _TCHAR* argv[]) {  int n=10;  //cout<<"c(5,3)="<<combination(3,3)<<endl;  //cout<<"c(5,0)="<<combination(3,0)<<endl;  cout<<n<<"阶梯的走法为:"<<step(10)<<endl;  system("pause");  return 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值