铺地板:地板长度为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后面的代码。以此类推。