codewars练习(javascript)-2021/2/3

codewars-js练习

2021/2/3

github 地址

my github地址,上面有做的习题记录,不断更新…

【1】<7kyu>【Gauß needs help! (Sums of a lot of numbers).】

求和

example

f(n=100) // returns 5050 
f('n')//false
f(3.14)// false, "n must be an integer"
f(-10)//false, "a positive value of n is required
f(0)// false, "a value of n greater than 0 is required"

solution

<script type="text/javascript">
 		function f(n){
 			console.log(n);
 			if(typeof n == 'number' && n % 1 ==0 && n > 0){
 				var sum =0;
 				for(var i=0;i<=n;i++){
 					sum +=i;
 				}
 				return sum;
 			}
 			return false;	
 		}

 		// 验证
		console.log(f(100));//5050
		console.log(f('n'));//fasle
		console.log(f(3.14));//false
	</script>
【2】<7kyu>【Sum of odd numbers】

Given the triangle of consecutive odd numbers:

             1
          3     5
       7     9    11
   13    15    17    19
21    23    25    27    29
...

Calculate the row sums of this triangle from the row index (starting at index 1) e.g.:

example

rowSumOddNumbers(1); // 1
rowSumOddNumbers(2); // 3 + 5 = 8
rowSumOddNumbers(42);//74088

思路

n第一个数该行总数最后一个数
1111
2325
37311
413419
521529
n(n-1)+1 (n>=2)n(n-1)+1+(n-1)2=(n-1)(n+2)+1

根据n确定第一个数和该行最后一个数,从而计算。

solution

<script type="text/javascript">
 		function rowSumOddNumbers(n) {
 			// console.log(n);
 			var one = n * (n-1) + 1;
 			var last = (n-1) * (n+2) + 1;
 			// console.log(one)
 			var sum = 0;
 			for(var i=one;i<=last;i=i+2){
 				sum +=i;
 			}
 			return sum;
 		}
 		// 验证
		console.log(rowSumOddNumbers(1)); // 1
		console.log(rowSumOddNumbers(2)); // 3 + 5 = 8
		console.log(rowSumOddNumbers(42));//74088
	</script>

以上为自己思路供大家参考,可能有更优的思路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值