-
2019-08-10 18:36:39
package test; public class Fortest { public static void main(String[] args) { int x=0; int n=3; for (int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ for(int k=1;k<=j;k++){ x++; System.out.println(x); } } } } }
我们来看以上程序,如果只计算时间复杂度,可以看出来,预估时间复杂度为n^3
不过要计算x的值,即循环次数。就会稍微麻烦。很容易绕晕。
一般性公式:(n(n+1)(n+2)(n+4)...)/(1*2*3*4...)
更多相关内容 -
三层循环执行次数计算过程
2019-10-05 12:19:41algs里分析ThreeSum算法的执行时间时用到了三层循环的执行次数,文章里只给了结论没有计算过程。不知道原理,只知道结果,不符合我的学习习惯,所以我用自己的方法尝试计算。下面是示例代码: for (int i = 0; i <...algs里分析ThreeSum算法的执行时间时用到了三层循环的执行次数,文章里只给了结论没有计算过程。不知道原理,只知道结果,不符合我的学习习惯,所以我用自己的方法尝试计算。下面是示例代码:
for (int i = 0; i < N; ++i) { for (int j = i + 1; j < N; ++j) { for (int k = j + 1 ; k < N; ++k) { // do something } } }
显而易见,最外层的循环的执行次数是 N N N次,第二层循环次数是个等差数列: N − 1 , N − 2 , N − 3 , . . . , 3 , 2 , 1 , 0 N-1, N-2, N-3, ..., 3, 2, 1, 0 N−1,N−2,N−3,...,3,2,1,0,所以第二层循环的执行次数是 N ( N − 1 ) 2 \frac{N(N-1)}{2} 2N(N−1)。第三层循环次数就不是那么直观了,可以先把i和j的值带入具体的值来分别计算第三层的循环次数,然后再分析下规律。
当 i = 0 , j ∈ [ 1 , N − 1 ] i=0, j\in[1, N-1] i=0,j∈[1,N−1]时
i j 第三层的循环次数 0 1 N-2 0 2 N-3 0 3 N-4 0 N-3 2 0 N-2 1 0 N-1 0 当 i = 1 , j ∈ [ 2 , N − 1 ] i=1, j\in[2, N-1] i=1,j∈[2,N−1]时
i j 第三层的循环次数 1 2 N-3 1 3 N-4 1 4 N-5 1 N-3 2 1 N-2 1 1 N-1 0 当 i = 2 , j ∈ [ 3 , N − 1 ] i=2, j\in[3, N-1] i=2,j∈[3,N−1]时
i j 第三层的循环次数 2 3 N-4 2 4 N-5 2 5 N-6 2 N-3 2 2 N-2 1 2 N-1 0 当 i = N − 4 , j ∈ [ N − 3 , N − 1 ] i=N-4, j\in[N-3, N-1] i=N−4,j∈[N−3,N−1]时
i j 第三层的循环次数 N-4 N-3 2 N-4 N-2 1 N-4 N-1 0 当 i = N − 3 , j ∈ [ N − 2 , N − 1 ] i=N-3, j\in[N-2, N-1] i=N−3,j∈[N−2,N−1]时
i j 第三层的循环次数 N-3 N-2 1 N-3 N-1 0 当 i = N − 2 , j ∈ [ N − 1 , N − 1 ] i=N-2, j\in[N-1, N-1] i=N−2,j∈[N−1,N−1]时
i j 第三层的循环次数 N-2 N-1 0 可以得出第三层循环的循环次数是与i相关的等差数列。
i 第三层的循环次数等差数列 第三层循环的循环次数和 0 N-2, N-3, N-4, N-5, N-6, N-7, …, 2, 1, 0 ( N − 2 ) ( N − 1 ) 2 \frac{(N-2)(N-1)}{2} 2(N−2)(N−1) 1 N-3, N-4, N-5, N-6, N-7, …, 2, 1, 0 ( N − 3 ) ( N − 2 ) 2 \frac{(N-3)(N-2)}{2} 2(N−3)(N−2) 2 N-4, N-5, N-6, N-7, …, 2, 1, 0 ( N − 4 ) ( N − 3 ) 2 \frac{(N-4)(N-3)}{2} 2(N−4)(N−3) … … … N-4 2, 1, 0 3 N-3 1, 0 1 N-2 0 0 由等差数列求和公式 f ( n ) = n 2 + n 2 f(n)=\frac{n^2+n}{2} f(n)=2n2+n可得第三层循环的循环次数和 s u m ( i ) = ( N − 2 − i ) 2 + ( N − 2 − i ) 2 , i ∈ [ 0 , N − 2 ] sum(i)=\frac{(N-2-i)^2+(N-2-i)}{2},i\in[0, N-2] sum(i)=2(N−2−i)2+(N−2−i),i∈[0,N−2],于是第三层循环的循环次数总和 ∑ i = 0 N − 2 s u m ( i ) \displaystyle \sum ^{N-2}_{i=0}sum(i) i=0∑N−2sum(i)
= ∑ i = 0 N − 2 ( N − 2 − i ) 2 + ( N − 2 − i ) 2 =\displaystyle \sum ^{N-2}_{i=0}\frac{(N-2-i)^2+(N-2-i)}{2} =i=0∑N−22(N−2−i)2+(N−2−i)
= ( N − 2 ) 2 + ( N − 2 ) 2 + ( N − 3 ) 2 + ( N − 3 ) 2 + ( N − 4 ) 2 + ( N − 4 ) 2 + . . . + ( 2 ) 2 + ( 2 ) 2 + ( 1 ) 2 + ( 1 ) 2 + ( 0 ) 2 + ( 0 ) 2 =\frac{(N-2)^2+(N-2)}{2}+\frac{(N-3)^2+(N-3)}{2}+\frac{(N-4)^2+(N-4)}{2}+...+\frac{(2)^2+(2)}{2}+\frac{(1)^2+(1)}{2}+\frac{(0)^2+(0)}{2} =2(N−2)2+(N−2)+2(N−3)2+(N−3)+2(N−4)2+(N−4)+...+2(2)2+(2)+2(1)2+(1)+2(0)2+(0)
= ( N − 2 ) 2 + ( N − 3 ) 2 + ( N − 4 ) 2 + . . . + ( 2 ) 2 + ( 1 ) 2 + ( 0 ) 2 + ( N − 2 ) + ( N − 3 ) + ( N − 4 ) + . . . + 2 + 1 + 0 2 =\frac{(N-2)^2+(N-3)^2+(N-4)^2+...+(2)^2+(1)^2+(0)^2+(N-2)+(N-3)+(N-4)+...+2+1+0}{2} =2(N−2)2+(N−3)2+(N−4)2+...+(2)2+(1)2+(0)2+(N−2)+(N−3)+(N−4)+...+2+1+0平方和公式 ∑ k = 1 n k 2 = n ( n + 1 ) ( 2 n + 1 ) 6 \displaystyle \sum ^{n}_{k=1}k^2=\frac{n(n+1)(2n+1)}{6} k=1∑nk2=6n(n+1)(2n+1)和等差数列求和公式 f ( n ) = n 2 + n 2 f(n)=\frac{n^2+n}{2} f(n)=2n2+n,所以
( N − 2 ) 2 + ( N − 3 ) 2 + ( N − 4 ) 2 + . . . + ( 2 ) 2 + ( 1 ) 2 + ( 0 ) 2 + ( N − 2 ) + ( N − 3 ) + ( N − 4 ) + . . . + 2 + 1 + 0 2 \frac{(N-2)^2+(N-3)^2+(N-4)^2+...+(2)^2+(1)^2+(0)^2+(N-2)+(N-3)+(N-4)+...+2+1+0}{2} 2(N−2)2+(N−3)2+(N−4)2+...+(2)2+(1)2+(0)2+(N−2)+(N−3)+(N−4)+...+2+1+0
= ( N − 2 ) ( N − 2 + 1 ) ( 2 ( N − 2 ) + 1 ) 6 + ( N − 2 ) 2 + ( N − 2 ) 2 2 =\frac{\frac{(N-2)(N-2+1)(2(N-2)+1)}{6}+\frac{(N-2)^2+(N-2)}{2}}{2} =26(N−2)(N−2+1)(2(N−2)+1)+2(N−2)2+(N−2)
为了方便计算,代入N-2=a
( N − 2 ) ( N − 2 + 1 ) ( 2 ( N − 2 ) + 1 ) 6 + ( N − 2 ) 2 + ( N − 2 ) 2 2 \frac{\frac{(N-2)(N-2+1)(2(N-2)+1)}{6}+\frac{(N-2)^2+(N-2)}{2}}{2} 26(N−2)(N−2+1)(2(N−2)+1)+2(N−2)2+(N−2)
= a ( a + 1 ) ( 2 a + 1 ) 6 + a 2 + a 2 2 =\frac{\frac{a(a+1)(2a+1)}{6}+\frac{a^2+a}{2}}{2} =26a(a+1)(2a+1)+2a2+a
= a ( a + 1 ) ( 2 a + 1 ) + 3 a ( a + 1 ) 6 2 =\frac{\frac{a(a+1)(2a+1)+3a(a+1)}{6}}{2} =26a(a+1)(2a+1)+3a(a+1)
= ( a + 1 ) ( 2 a 2 + a + 3 a ) 6 2 =\frac{\frac{(a+1)(2a^2+a+3a)}{6}}{2} =26(a+1)(2a2+a+3a)
= a ( a + 1 ) ( a + 2 ) 6 =\frac{a(a+1)(a+2)}{6} =6a(a+1)(a+2)
再代入a=N-2
= a ( a + 1 ) ( a + 2 ) 6 =\frac{a(a+1)(a+2)}{6} =6a(a+1)(a+2)
= ( N − 2 ) ( N − 1 ) N 6 =\frac{(N-2)(N-1)N}{6} =6(N−2)(N−1)N
所以
第三层循环的循环次数总和 ∑ i = 0 N − 2 s u m ( i ) = ( N − 2 ) ( N − 1 ) N 6 \displaystyle \sum ^{N-2}_{i=0}sum(i)=\frac{(N-2)(N-1)N}{6} i=0∑N−2sum(i)=6(N−2)(N−1)N -
多重for循环嵌套中语句的执行次数
2019-08-11 20:13:23实例代码 for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { ...以上代码中,求count++语句的执行次数。 其实这段代码中求count++...实例代码
for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { count++; } } }
以上代码中,求
count++
语句的执行次数。其实这段代码中求
count++
语句的执行次数等价于:从n个整数中取出三个整数的组合总共有多少种(不考虑顺序,1,2,3 2,3,1 等算一种)。求解过程
n > 2 时 : n>2时: n>2时:
当 i = 0 时 , j = 1 ∼ ( n − 1 ) , c o u n t 的 执 行 次 数 为 ( ( n − 1 ) − 1 ) + ( n − 3 ) + ( n − 4 ) + ⋯ + 2 + 1 当i=0时,j=1\sim (n-1),count的执行次数为((n-1)-1)+(n-3)+(n-4)+\cdots+2+1 当i=0时,j=1∼(n−1),count的执行次数为((n−1)−1)+(n−3)+(n−4)+⋯+2+1
当 i = 1 时 , j = 2 ∼ ( n − 1 ) , c o u n t 的 执 行 次 数 为 ( ( n − 1 ) − 2 ) + ( n − 4 ) + ( n − 5 ) ⋯ + 2 + 1 当i=1时,j=2\sim (n-1),count的执行次数为((n-1)-2)+(n-4)+(n-5)\cdots+2+1 当i=1时,j=2∼(n−1),count的执行次数为((n−1)−2)+(n−4)+(n−5)⋯+2+1
当 i = 2 时 , j = 3 ∼ ( n − 1 ) , c o u n t 的 执 行 次 数 为 ( ( n − 1 ) − 3 ) + ( n − 5 ) + ⋯ + 2 + 1 当i=2时,j=3\sim (n-1),count的执行次数为((n-1)-3)+(n-5)+\cdots+2+1 当i=2时,j=3∼(n−1),count的执行次数为((n−1)−3)+(n−5)+⋯+2+1
⋮ \vdots ⋮
当 i = n − 3 时 , j = ( n − 2 ) ∼ ( n − 1 ) , c o u n t 的 执 行 次 数 为 1 当i=n-3时,j=(n-2)\sim (n-1),count的执行次数为1 当i=n−3时,j=(n−2)∼(n−1),count的执行次数为1
当 i = n − 2 时 , j = ( n − 1 ) , c o u n t 的 执 行 次 数 为 0 当i=n-2时,j=(n-1),count的执行次数为0 当i=n−2时,j=(n−1),count的执行次数为0
可以看出,每次
i
产生变化时,count++
语句的执行次数都是一个等差数列,可由等差数列求和公式:
S n = n ( a 1 + a n ) 2 = 1 + 2 + ⋯ + n = n ( 1 + n ) 2 = n 2 + n 2 S_n=\frac{n(a_1+a_n)}{2}=1+2+\cdots+n=\frac{n(1+n)}{2}=\frac{n^2+n}{2} Sn=2n(a1+an)=1+2+⋯+n=2n(1+n)=2n2+n
count++
总执行次数 S n : S_n: Sn:
S n = ( n − 2 ) 2 + ( n − 2 ) 2 + ( n − 3 ) 2 + ( n − 3 ) 2 + ⋯ + 2 2 + 2 2 + 1 2 + 1 2 = ( ( n − 2 ) 2 + ( n − 3 ) 2 + ⋯ + 2 2 + 1 2 ) + ( ( n − 2 ) + ( n − 3 ) + ⋯ + 2 + 1 ) 2 S_n=\frac{(n-2)^2+(n-2)}{2}+\frac{(n-3)^2+(n-3)}{2}+\cdots+\frac{2^2+2}{2}+\frac{1^2+1}{2}\\ =\frac{((n-2)^2+(n-3)^2+\cdots+2^2+1^2)+((n-2)+(n-3)+\cdots+2+1)}{2} Sn=2(n−2)2+(n−2)+2(n−3)2+(n−3)+⋯+222+2+212+1=2((n−2)2+(n−3)2+⋯+22+12)+((n−2)+(n−3)+⋯+2+1)
再由公式:
1 2 + 2 2 + ⋯ + n 2 = n ( n + 1 ) ( 2 n + 1 ) 6 1^2+2^2+\cdots+n^2=\frac{n(n+1)(2n+1)}{6} 12+22+⋯+n2=6n(n+1)(2n+1)
得:
S n = ( n − 2 ) ( n − 2 + 1 ) ( 2 ( n − 2 ) + 1 ) 6 + ( n − 2 ) 2 + ( n − 2 ) 2 2 = n ( n − 1 ) ( n − 2 ) 6 S_n=\frac{\frac{(n-2)(n-2+1)(2(n-2)+1)}{6}+\frac{(n-2)^2+(n-2)}{2}}{2}\\ =\frac{n(n-1)(n-2)}{6} Sn=26(n−2)(n−2+1)(2(n−2)+1)+2(n−2)2+(n−2)=6n(n−1)(n−2)
0 < n < 2 时 : 0<n<2时: 0<n<2时:count++
的执行次数为0, n > 2 n>2 n>2的公式仍适用于 0 < n < 2 0<n<2 0<n<2的情况。即:
count++
语句的执行次数为 n ( n − 1 ) ( n − 2 ) 6 \frac{n(n-1)(n-2)}{6} 6n(n−1)(n−2)参考文章
-
for循环中每条语句执行的次数以及时间复杂度的计算
2020-11-27 19:58:161.for(i=1;i<=n;i++){ //n+1次 - for(j=1;j<=n;j++){ //n(n+1)次 - c[i][j]=0; //n*n次 - for(k=0;k<n;k++) //n*n*(n+1)次 - c[i][[j]=c[i][[j]+a[i][j]*b...示例代码展示
1.for(i=1;i<=n;i++){ //n+1次 2. for(j=1;j<=n;j++){ //n(n+1)次 3. c[i][j]=0; //n*n次 4. for(k=0;k<n;k++) //n*n*(n+1)次 5. c[i][[j]=c[i][[j]+a[i][j]*b[k][j]; //n*n*n次 6. } 7.}
示例代码为两个n × n矩阵相乘的算法
- 我们把算法所耗费的时间定义为该算法每条语句的频度之和:
T(n)=2n3 +3n2 2n+1
算法的时间复杂度例题
1. i=1; 2. while(i<=n) 3. i=i*2;
- 若循环执行一次:i=1*2=2,
- 若循环执行一次:i=2*2=22,
- 若循环执行一次:i=2*2=23,
- 若循环执行X次:i=2x
设语句 i+i*2 执行次数为x次,
由循环条件i<=n,所以2x <=n,所以 x<=log2 n
2f(n) <=n,即f(n)<=log2 n,取最大值,f(n) = log2 n,
所以该程序段的时间复杂度T(n)=O(log2 n)。 - 我们把算法所耗费的时间定义为该算法每条语句的频度之和:
-
跟小白学Python数据分析——For循环
2021-01-14 01:30:33循环是指反复地连续做某件事,例如地球绕地轴自转一圈就是一天,自转的同时绕太阳公转一圈就是一年。周而复始,转了一圈又一圈,一次又一次地循环。...在Python中,循环语句有两个,一个是For循环,一... -
特殊for循环嵌套执行的次数
2020-06-12 16:16:02for(i=1;i<=n;i*=2) for(j=1;j<=i;j++) ...内层for循环上限i的取值为1 2 4 8 ....,是一个等比数列; 所以,总循环次数为 Sn = 2*(1-)/(1 - 2) + 1 =- 1, 代入k值有:(<=n 且是2的倍数) ... -
利用range函数控制for循环的执行次数
2021-03-19 15:26:23(至于range函数获取的数值是从0开始到n-1结束这一点,完全不用考虑,因为range函数获取的数值是多少是毫无用处的,在这里它的用处仅仅是控制循环执行次数而已。) 所以在执行power(2,3)时,result*=x这行代码只会... -
MATLAB for循环
2021-10-18 00:32:15MATLAB for循环 MATLAB中 for 循环是一个重复的控制结构,可以有效地写一个循环,只是执行的次数是特定的。 MATLAB for 循环语法: MATLAB中的 for循环的语法如下: for index = values ... end for 循环... -
javascript学习中遇到的for循环次数问题。
2017-07-23 16:09:03var a=0; outermost: for(var i=0;i;i++){ for(var j=0;j;j++){ if(i==5&&j==5){ break outermost; } a++; } } alert(a) -
【Python】for 循环次数
2021-08-15 15:13:35* for i in range(n): 循环n次 * for i in range(m, n): 循环n-m次 -
asp中for循环的使用方法
2021-01-02 15:36:552、For…Next 循环 如果重复操作的次数固定,使用 For…Next 循环是一个很好的选择,此外也将介绍语法很类似的 For Each…Next循环,它适用在数组或集合的重复循环,(一)For…Next 在 For…Next 循环的语法中使用... -
c语言for循环如何使用
2021-05-19 12:05:37c语言for循环for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合已知循环次数的情况。一般形式如下:for ( [表达式 1]; [表达式 2 ]; [表达式3] )语句其中:表达式1:一般为赋值表达式,给控... -
解析C++中的for循环以及基于范围的for语句使用
2020-12-26 09:25:02for循环语句 重复执行语句,直到条件变为 false。 语法 for ( init-expression ; cond-expression ; loop-expression ) statement; 备注 使用 for 语句可构建必须执行指定次数的循环。 for 语句包括三个可选部分... -
Lua 之 for 循环 -- 循环条件不会改变循环次数
2020-07-10 22:15:06Lua 之 for 循环 – 循环条件不会改变循环次数 for 循环中,循环的索引 i 为外部索引,修改循环语句中的内部索引 i,不会影响循环次数: -
【求解思路】计算三层for循环的时间复杂度
2019-12-17 18:22:49求划线部分的执行次数为 for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { for (int k = 1; k <= j; k++) { x=x+y; ... -
解决微信小程序、mpvue、vue 关于 wx:for、v-for 循环次数的问题
2018-11-21 11:03:04view wx:for="{{dataArray}}" wx:key="index" wx:for-item="item" wx:if="{{index<5}}"></view> mpvue、vue:v-if="index<5... -
Python for循环
2020-11-26 06:57:50除了 while 循环,还有一种更具有可读性的循环结构,这就是...for循环在 Python 中,for 语句包含以下部分:for关键字;变量;in关键字;范围;冒号;从下一行开始,缩进的代码块。提示:for 循环用于循环代码一定次... -
java For循环执行过程
2020-09-14 10:47:01一,java for循环执行过程 先上代码,有一个循环100遍的代码。 for(int i=0;i<100;i++){ //i初始值,i<100循环条件,i++循环迭代次数 System.out.println("哈哈哈"+i+"次"); //循环体 } 首先拆开来看一下,... -
EDA/PLD中的LabVIEW的For循环
2020-11-17 04:57:29For循环按照设定好的次数N执行结构内的对象,包含两个长整型参数:总的循环次数N和当前循环次数I。建立For循环结构需要以下几个步骤。 · 第1步:放置For循环框。在子选板上单击鼠标左键或右键选择“For循环”... -
C# 一秒之内执行简单for循环的次数
2019-07-16 22:09:00本人闲着无聊,想看一下本人电脑C#执行for循环一秒间能执行多少次i++操作。 电脑信息: 8核8G i5-8300H 电脑信息 Code: static void Main(string[] args) { Stopwatch watch = new Stopwatch(); ... -
C语言 for循环次数
2019-04-30 09:46:00C语言 for循环次数 for (i = 0;i < n;i++) 则循环次数是N,而循环结束以后,i的值是n。循环的控制变量i,是选择从0开始还是从1开始,是判断i<n 还是i <= n,对循环的次数,循环结束后变量... -
php for 循环使用的简单实例
2020-12-18 12:59:38•条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。 •增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。 注释:上面的初始值和增量参数可为空,或者有多个... -
循环执行次数 n(n+1)/2
2018-01-16 20:23:09int main(void) { int n = 3;... for ( i = 0; i ; i++) for (j = i; j ; j++) printf("i=%d,j=%d\n",i,j); system("pause"); return 0; } /* i=0,j=0 i=0,j=1 i=0,j=2 i=1,j=1 i=1,j=2 i=2 -
浅谈php中的循环while、do…while、for、foreach四种循环
2020-12-18 20:13:20for–循环执行代码块制定的次数。 foreach–根据数组中每个元素来循环代码块。 while循环 while语句循环执行代码块,直到指定的条件不成立。 while(条件) { 要循环执行的代码; } 案例: 设置一 -
LabVIEW的For循环
2021-01-19 23:04:49For循环按照设定好的次数N执行结构内的对象,包含两个长整型参数:总的循环次数N和当前循环次数I。建立For循环结构需要以下几个步骤。 · 第1步:放置For循环框。在子选板上单击鼠标左键或右键选择“For循环”... -
for循环
2021-03-06 06:36:52除了while和do while循环,Java使用最广泛的是for循环。for循环的功能非常强大,它使用计数器实现循环。for循环会先初始化计数器,然后,在每次循环前检测循环条件,在每次循环后更新计数器。计数器变量通常命名为i... -
【个人理解】计算for三层嵌套循环的时间复杂度
2021-01-20 13:21:21m=0 for(i=1;i<=N;i++) for(j=1;j<=i;...知道了第n次循环m的执行次数,再全部加起来就能知道总的次数,也就是求数列的前n项和: 又因为; 所以数列an前n-1项和 . 把(n-1)换成n,也就是数列前n项和; -
python for循环次数避坑
2021-02-08 21:06:31这段代码按理说应该成为死循环,可是并没有,for循环依旧只执行了5次。 第二段代码: array=[3,4,5] for i in range(len(array)): array.append(i) print(i) print(array) 结果: 0 1 2 [3, 4, 5, -
深入解析Go语言中for循环的写法
2020-12-31 09:33:28for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环。 语法 for循环在Go编程语言中的语法是: 代码如下: for [condition | ( init; condition; increment ) | Range] { statement(s); } 下面... -
for循环能够设置次数,while循环条件满足没有次数限制
2021-03-14 12:05:17区别:1、运用场景不同:晓得执行次数的时分普通用for,条件循环时普通用while。2、两种循环在结构死循环时的区别:while循环里的条件被看成表达式,因而,当用while结构死循环时,里面的TRUE实践上被看成永远为真的...