问题描述
有一长度为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+2
4=2+2
编程用递归的方法求解上述问题。
例如,长度为4的地面一共有如下5种铺法:
4=1+1+1+1
4=2+1+1
4=1+2+1
4=1+1+2
4=2+2
编程用递归的方法求解上述问题。
输入格式
只有一个数N,代表地板的长度
输出格式
输出一个数,代表所有不同的瓷砖铺放方法的总数
样例输入
4
样例输出
5
1 #include<stdio.h> 2 3 int n, num = 0; 4 5 void fun(int x) 6 { 7 int a = x; 8 //刚好铺满地面 9 if (a == n) 10 { 11 num++; 12 return; 13 } 14 else if (a > n) 15 { 16 return; 17 } 18 //加一块长度为1的砖 19 fun(a + 1); 20 //加一块长度为2的砖 21 fun(a + 2); 22 } 23 24 int main() 25 { 26 scanf("%d", &n); 27 fun(0); 28 //最初没有铺砖 总长度为0 29 printf("%d", num); 30 return 0; 31 }