老规矩,开新章节的时候先简单介绍一下。
递归,很简单,函数已经学了,递归通俗来讲就是函数的自我调用,和套娃有异曲同工之妙,函数调用函数,被调用的函数再调用函数......这样就会形成一个死循环,所以每一个递归都要有跳出条件,不然就永无止境的循环下去,出不了结果。听起来和循环很像,但递归更高级,循环能解决的问题递归能解决,循环解决不了的问题递归也能解决。
正文开始:
骨牌铺路
题目描述:有1×n(n≤50)的一个长方形,用1×1、1×2 和1×3 的骨牌铺满方格,请问有多少种铺法?例如当n=3 时为1×3 的方格。此时用1×1 ,1×2 和1×3 的骨牌铺满方格,共有四种铺法。如下图:(圆形代表一格的骨牌,两格的横线代表两格的骨牌,三格的横线一样)
输入一个整数n(n≤50)输出骨牌的铺法。
#include<bits/stdc++.h>
int func(int);
using namespace std;
int main()
{
int n;
cin>>n;
cout<<func(n);
return 0;
}
int func(int n)
{
if(n==1)return 1;
if(n==2)return 2;
if(n==3)return 4;
//前三个数的前三个数会出现找不到对应数据情况所以前三个数据要单独拿出来算
return func(n-1)+func(n-2)+func(n-3);//因为每一个数都是前三个数的和,如果前面找不到就套娃再来一次
}
统计每个月兔子的总数
题目描述:有一对兔子,从出生后第3个月起每个月都生一对兔子,一对小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月(n<=50)的兔子总数为多少对?输入1个整数n

最低0.47元/天 解锁文章
1472

被折叠的 条评论
为什么被折叠?



