递归的调用顺序

来源:互联网 发布:爱塔传奇 唐大华知乎 编辑:程序博客网 时间:2024/06/06 18:02

铺地板:地板长度为4宽为1, 砖头为1x1 ,1x2。一共有多少种方法填满地板,

递归解题。

static int n = 4;static int result=0;static void getresult(int len){    if(len==n)    {result++;        return ;}    if(len>n)        return;    if(len+1<=n){        printf("len地址:%p",&len);        getresult(len+1);  //#1    }    printf("len地址:%p",&len);    if(len+2<=n)        getresult(len+2); //#2}int main(int argc, char * argv[]) {        getresult(0);    printf("%d",result);        @autoreleasepool {        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));    }}

顺序核心,#1会一直执行它本身即前面的代码,直到不满足条件后,执行后面的代码。

        因此getresult会被调用很多层,当最后一层不满足时回到倒数第二层,执行#1后面的代码。以此类推。

   

 

0 0
原创粉丝点击