js的双for循环,求详细解释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js的双for循环,求详细解释相关的知识,希望对你有一定的参考价值。

var num = [5, 12, 6, 16, 3, 15, 34,19];
var za="";
for( var i=0; i<num.length; i++)
for( var j=i; j<num.length; j++)
if(num[i]>num[j])
za=num[i];
num[i]=num[j];
num[j]=za;



console.log(num)

求详细解释for循环和if里面求法
新手越细越好 最好能把每次循环都写出来
不理解for循环的方法

这个是冒泡排序法的经典例子。

运行完后num数组会被被排序

for循环运行的次序是,外层先走一步,然后内层走完,然后外层再走一步,内层再走一圈。

具体来说,
i=0: j依次遍历0,1,2,3,4,5,6,7,程序比较num[0]和num[0-7],只要发现num[0]比某一个数大,就把num[0]和此数交换

这样一来当i=0的时候,j走了一圈后的结果就是把数组的第一个数,也就是num[0]弄成了整个数组中最小的数(也就是3)

接下来i=1; j依次遍历1,2,3,4,5,6,7
结果是num[1]变成剩下数中最小的(也就是5)

然后i=2;j遍历2,3,4,5,6,7

i=3;j走过3,4,5,6,7
.
.
.
最后的结果就是数组被排序了。
参考技术A 这就是个排序算法,如果这个数组前一个数大于后面一个数,就把后面一个数与前面一个数调换一下位置。每轮可以选出这轮最小的数放到数组最前面//而且这个其实可以改进一下var j=i+1

i从第1个数开始,j从第i个数开始。比如i=0时,进入最里面的循环j=0,num[i]=num[j]=5,不符合if语句,j=1,num[i]=5,num[j]=12,不符合if语句.....j=4,num[j]=3,num[i]=5,符合if语句,换位置。依次类推,你就明白了
参考技术B

这个是冒泡排序。

用数组中的每一位和后面的进行比较,然后换位置。

var num = [5, 12, 6, 16, 3, 15, 34,19];
var za="";
for( var i=0; i<num.length; i++)     //数组中的每个位置的数
for( var j=i; j<num.length; j++)  //要比较的数
if(num[i]>num[j])    //换位置
za=num[i];
num[i]=num[j];
num[j]=za;



console.log(num)

参考技术C

其实这种写法可以改进的,性能会好上不少。稍微做一个逻辑思考,也容易懂,下面贴出代码

for( var i=0; i<num.length-1; i++)    
            for( var j=i+1; j<num.length; j++)  
                
              
        

可以测试下循环次数。

参考技术D 自己 找个for循环的视频 好好看看吧,这是最基础了

在matlab中使用for循环求1到10阶乘的值

用matlab设计程序如下:

for i=1:10

    sum=1;

for j=1:i

sum=sum*j;

end

sum

end

运行结果显示,1到10的阶乘分别是:  1、2、  6、 24、120、 720、5040、40320、362880  、3628800。

运行结果如图:

扩展资料

MATLAB中for循环的语法是 -

for index = values 

 ...end。

其中,values的值取如下格式:





参考技术A

源程序代码以及算法解释如下:

matlab求1-10的阶乘的函数源码如下:

function p = factorial()

p=1;

for a=1:10%设置要求的阶乘

for i=1:a%循环遍历从1到a

    p=p*i;%遍历相乘

end;//函数结束

p%输出结果

p=1;%p还原其初始值

end

end

程序运行结果如下:


扩展资料:

C++实现求1到10的阶乘之和,代码如下:

#include<stdio.h>

int main()


 double a,b=1,sum=0;

 for(a=1;a<=10;a++)

 

  b = a*b; /* 原理:1!等于1乘以1,2!等于1!乘以2,3!等于2!乘以3,以此类推 ,10!等于9!乘以10 */ 

  sum = sum+b; /* 依次将1到10的阶乘相加 */ 

 

 printf("%lf\\n",sum);

 return 0;

同理,如果求一个已知整数Number1到另一个已知整数Number2的阶乘之和,只需在代码里做以下修改和替换:

#include<stdio.h>

int main()


 double a,b=1,sum=0;

 for(a=Number1;a<=Number2;a++)  /* 在此处用具体的值替换Number1和Number2,如求10到100的阶乘之和,只需在此处用10替换Number1,100替换Number2 */

 

  b = a*b; 

  sum = sum+b; 

 

 printf("%lf\\n",sum);

 return 0;


参考技术B

这几个语句可以用:

参考技术C sum = 1;
for i = 1:1:10
sum = sum * i;
end
disp(['10的阶乘 = ',num2str(sum)]);
参考技术D

以上是关于js的双for循环,求详细解释的主要内容,如果未能解决你的问题,请参考以下文章

java里面的for循环的格式: for(String s : arr)是啥意思,能否详细解释一下?

java for循环怎样写出1-10!的和啊,求详细说明,我看不懂

在js中循环结构for循环求1-100之间能所有能被3整除的数字的和

求return,break,continu区别

js for循环条件判断

js for循环实例