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);
}
}