1. 程式人生 > >n個臺階,每次都可以走一步,走兩步,走三步,走到頂部一共有多少種可能

n個臺階,每次都可以走一步,走兩步,走三步,走到頂部一共有多少種可能

bsp return 頂部 htm pri 每次 lan href com

分析

第一個臺階 1
第二個臺階 11 2 //走兩次1步或者走1次兩步
第三個臺階 111 12 21 3
第四個臺階 1111 112 121 211 22 13 31

思想:4階臺階,第一次可以邁1步(還剩3臺階也就是f(3)可能)或者2步(還剩2臺階也就是f(2)可能)或者3步(還剩1臺階也就是f(1)可能)


f(n)=f(n-1)+f(n-2)+f(n-3) 第n個臺階的可能 = n-1臺階的可能+n-2臺階的可能+n-3臺階的可能

我這裏采用了遞歸算法

//param x  臺階數目
int goadd(int x)
{
    if (x == 1){
        return 1;
    }
    else if (x == 2){
        return 2;
    }
    else if (x == 3){
        return 4;
    }
    else{
        return goadd(x - 1) + goadd(x-2)+goadd(x-3);
    }

}

void main()
{
    printf("%d", goadd(5));
    getchar();

}

轉自:http://www.cnblogs.com/nfcm/p/6368058.html

n個臺階,每次都可以走一步,走兩步,走三步,走到頂部一共有多少種可能