C++递归

老规矩,开新章节的时候先简单介绍一下。

递归,很简单,函数已经学了,递归通俗来讲就是函数的自我调用,和套娃有异曲同工之妙,函数调用函数,被调用的函数再调用函数......这样就会形成一个死循环,所以每一个递归都要有跳出条件,不然就永无止境的循环下去,出不了结果。听起来和循环很像,但递归更高级,循环能解决的问题递归能解决,循环解决不了的问题递归也能解决。

正文开始:

骨牌铺路

题目描述:有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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值