hehevv 发表于 2021-6-11 22:07:32

for循环怎么计算判断次数?

main()
{int i,j,k,m,n=0;
for(i=1;i<=10;i++)                                                                                        /*列举4个1到9之间的数的所有排列,供选择*/
        for(j=1;j<=10;j++)
                for(k=1;k<=10;k++)
                        for(m=1;m<=10;m++)
                        {if(i==j||i==k||i==m||j==k||j==m||k==m) continue;
                       if(i+j+k+m!=12)continue;                                                        /*不满足条件,舍弃*/
                       n++;                                                                                /*满足条件的排列计数*/
                       printf("{%d,%d,%d,%d,}",i,j,k,m);
                       if(n%6==0)printf("\n");                                                        /*每行输出6个排列*/
                        }
}
运行结果:{1,2,3,6} {1,2,4,5} {1,2,5,4} {1,2,6,3}...... 结果在这不一一列举了
问题:代码中共循环了9^4=6561次,然后后面它说每次循环判断8次,共8*9^4=5488次判断,这个判断次数我不知道怎么得出来的,8次判断分别是哪些?for语句的表达式2是控制条件语句,4个for语句,然后花括号里的3个if语句,在我的理解看来是7个判断。

万千只cnm 发表于 2021-6-11 22:21:28

加一个变量呗
int count = 0;
最内层for
count++;

hehevv 发表于 2021-6-11 23:00:02

万千只cnm 发表于 2021-6-11 22:21
加一个变量呗
int count = 0;
最内层for


不是啊,我是问总共代码里要判断多少次,所有的排列的,不管符合条件的还是不符合条件的

wp231957 发表于 2021-6-12 05:14:08

3个if语句,第一个是6个判断,总共8个,话说研究这个有意义吗

hehevv 发表于 2021-6-13 09:17:24

wp231957 发表于 2021-6-12 05:14
3个if语句,第一个是6个判断,总共8个,话说研究这个有意义吗

是没啥意义,但是想知道罢了,不然我以为又是书错的了,这书印刷看的我有点一言难尽,等新书到了就不看这书了
页: [1]
查看完整版本: for循环怎么计算判断次数?