铺地板问题
有一长度为 N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为 1,另一种长度为 2,数目不限。要将这个长度为 N 的地板铺满,一共有多少种不同的铺法?例如,长度为 4 的地面一共有如下 5 种铺法:4=1+1+1+1 4=2+1+1 4=1+2+1 4=1+1+24=2+2 编程用递归的方法求解上述问题。
【输入】只有一个数 N,代表地板的长度
【输出】输出一个数,代表所有不同的瓷砖铺放方法的总数
【输入范例】4
【输出范例】5
程序代码:
#include<stdio.h>
int fun(int n)
{
if(n==1||n==2) //n为1时就只有一种,n为2时就只有两种
return n;
else if(n>2)
return (fun(n-1)+fun(n-2)); //当n大于2时,递归调用
else
return 0;
}
int main()
{
int N; //N表示地板的长度
scanf("%d",&N); //输入N
printf("%d\n",fun(N)); //递归调用,输出
return 0;
}