练习一
求1! + 2! + 3! + 4! + …… + 10!的和
叹号表示阶乘,如4! = 1 * 2 * 3 * 4
function jiecheng(num){ //阶乘函数
// if(num<=1){
// return 1;
// }else{
// return num*jiecheng(num-1);
// }
return num<=1 ? 1 : num*jiecheng(num-1);
}
var result=0;
for(i=0;i<=10;i++){
result += jiecheng(i);
}
console.log("1-10数字阶乘和为" + result);
练习二
求一个三位数,该三位数等与其每位数字的阶乘之和。
function jiecheng(num){
return num<=1 ? 1 : num*jiecheng(num-1);
}
for(i=100;i<=1000;i++){
var result = 0;
num = i;
while(num){
result += jiecheng(num%10);
num = parseInt(num /10);
}
if(result==i){
console.log("三位数等与其每位数字的阶乘之和的数是" + i);
}
}
练习三
编写一个函数rev用于将一个整数前后倒置。
例如rev(12345)将返回54321,rev(123)将返回321
整数位数不限制,多少位都行。
方法一借用字符串
function rev(num){
var str=""+num;
var length=str.length;
var result="";
for(var i=0;i<length;i++){
result += num%10;
num = parseInt(num/10);
}
return +result
}
console.log(rev(12345));
方法二也是借助字符串
var result="";
while(num){
result += num%10;
num = parseInt(num/10);
}
return +result
}
console.log(rev(12345));
方法三不借助字符串
function rev(num){
var result=0;
while(num){
result =result*10+num%10;
num = parseInt(num/10);
}
return result
}
console.log(rev(12345));
练习四
如果整数A 的全部约数(包括1,不包括A 本身)之和等于B,且整数B 的全部约数 (包括1,不包括B 本身)之和等于A,则称整数A和B是一对亲密数。
求3000 以内的全部亲密数。
function yueshuhe(num){// 封装一个不包含自己的约束和的方法
sum=0;
for(var i=1;i<num;i++){
if(num%i==0){
sum += i;
}
}
return sum;
}
for(var A=1;A<=3000;A++){
for(var B=1;B<=3000;B++){
if(A==yueshuhe(B) && yueshuhe(A)==B && A != B){
console.log(A,B,"是亲密数");
}
}
}
优化 就让B等于yueshuhe(A)
function yueshuhe(num){// 封装一个不包含自己的约束和的方法
sum=0;
for(var i=1;i<num;i++){
if(num%i==0){
sum += i;
}
}
return sum;
}
for(var A=1;A<=3000;A++){
B=yueshuhe(A)
if(A==yueshuhe(B) && yueshuhe(A)==B && A != B){
console.log(A,B,"是亲密数");
}
}
练习五
定义一组函数,输入数字,逆转并输出汉字形式
function numToChinese(num){
switch(num){
case 0:
return "零";
case 1:
return "壹";
case 2:
return "贰";
case 3:
return "叁";
case 4:
return "肆";
case 5:
return "伍";
case 6:
return "陆";
case 7:
return "柒";
case 8:
return "捌";
case 9:
return "玖";
case 10:
return "拾";
}
}
function rev(num){
var result='';
while(num){
result += numToChinese(num%10); //调用映射函数
num = parseInt(num/10);
}
return result
}
console.log(rev(66443322));
网友评论