您的位置:首页 > 其它

递归的调用顺序

2016-12-25 18:23 274 查看
铺地板:地板长度为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后面的代码。以此类推。
   


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: