inverseli 发表于 2018-2-9 18:21:20

关于c

#include<stdio.h>
int a,book,n;
void dfs(int step){
        int i;
        //2
        if(step == n+1){
                for(i=1;i<=n;i++)
                        printf("%d",a);
                printf("\n");
                //1
                return;
        }
        for(i=1;i<=n;i++){
                if(book == 0){
                        a = i;
                        book = 1;
                        dfs(step+1);
                        //?
                        book = 0;
                }

        }
        return;
}
int main(){
        scanf("%d",&n);
        dfs(1);
        getchar();
        return 0;
}


什么时候才能执行book = 0这个语句?
先执行dfs(step+1)这个,然后进行2处的if判断,如果为真,就接着执行1处的return,然后整个函数结束

lies_for_L 发表于 2018-2-9 21:20:43

递归到setp+1=n
页: [1]
查看完整版本: 关于c