js流程控制语句算法题-1

1.分别使用while/do-while/for循环以及递归算法实现10的阶乘

//while
var result=1,i=1;
while(i<=10){
result=result*i;
i++;
}
console.log(result);

//do-while
var result=1,i=1;
do{
result=result*i;
i++;
}while(i<=10);
console.log(result);

//for
var result=1;
for(var i=1;i<=10;i++){
result=result*i;
}
console.log(result);

//递归算法:在函数内部调用函数本身,一层一层传递下去,最终到达一个出口,将结果归结起来。
function Digui(n){
if(n==0) return 1;
else return n*Digui(n-1);
}
var result=Digui(10);
console.log(result);

2.使用for打印九九乘法表。

形式一:

1*1 = 1

1*2 = 2  2*2 = 4

1*3 = 3  2*3 = 6  3*3 = 9

...

1*9 = 9  2*9 = 18 3*9 = 27 ... 9*9 = 81

形式二:

1*9 = 9  2*9 = 18 3*9 = 27 ... 9*9 = 81

...

1*3 = 3  2*3 = 6  3*3 = 9

1*2 = 2  2*2 = 4

1*1 = 1

//形式一:
for(var i=1;i<=9;i++){
    var line="";
        for(var j=1;j<=i;j++){
            var space="\t";
            if(i*j<10) space=" \t";
            line+=(j+"*"+i+" = "+(i*j)+space);
   }
console.log(line+"\n");
}

//形式二:
for(var i=9;i>=1;i--){
    var line="";
        for(var j=1;j<=i;j++){
            var space="\t";
            if(i*j<10) space=" \t";
            line+=(j+"*"+i+" = "+(i*j)+space);
    }
console.log(line+"\n");
}

3.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

var num=0,count=0;
for(var i=1;i<5;i++){
        for(var j=1;j<5;j++){
                for(var k=1;k<=4;k++){
                        if(i!=j&&j!=k&&k!=i){
                                num=i*100+j*10+k;
                                console.log(num);
                                count++;
                        }   
                }   
        }   
}
console.log("count="+count);

4.判断101-200之间有多少个素数,并输出所有素数(只能被1和它本身整除的自然数为素数)

var count=0;
for(var i=101;i<200;i+=2){//偶数能被2整除,肯定不是素数
        for(var j=2;j<=i;j++){
                if(i%j==0 && i!=j){//结束内层循环,外层的i肯定不是素数
                   break;
                }else if(i%j==0){//或者条件写 i==j都行
                        console.log(i);//打印该素数
                        count++;
                 }   
        }   
}
console.log("prime number between 101 and 200 total count="+count);

5.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

var a=0,b=0,c=0;
for(var i=100;i<=999;i++){
        a=parseInt(i/100);
        b=parseInt(i%100/10);
        c=i%10;
        if(i===a*a*a+b*b*b+c*c*c){
                console.log(i);
        }   
     
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值