铺地板问题

有一长度为 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;

}


猜你喜欢

转载自blog.csdn.net/xu_benjamin/article/details/80961085