问题描述
有一长度为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 编程用递归的方法求解上述问题。
输入格式
只有一个数N,代表地板的长度
输出格式
输出一个数,代表所有不同的瓷砖铺放方法的总数
样例输入
4
样例输出
5
我的思路:
就硬写。
代码:
package LanQiao;
import java.io.BufferedInputStream;
import java.util.Scanner;
/**
* Copyright (C), 2019-2021, Kkoo
* Author: kkoo
* Date: 2021/11/24 11:42 下午
* FileName: 瓷砖铺放
*/
public class 瓷砖铺放 {
private static int count = 0;
public static void main(String[] args) {
Scanner in = new Scanner(new BufferedInputStream(System.in));
//输入n
int n = in.nextInt();
fun(n);
System.out.println(count);
}
public static void fun(int n) {
//每一次调用铺一次
if (n == 0) {
//如果n==0 说明瓷砖已经铺满 铺法加1
count++;
return;
}
//如果n<0说明不能用这个所以返回
if (n < 0) {
return;
}
//使用长度1的瓷砖
fun(n - 1);
//使用长度2的瓷砖
fun(n - 2);
}
}
作者:Kkoo
链接:https://www.pwwwp.com/
著作权归作者所有。商业转载请联系作者进行授权,非商业转载请注明出处。