#java #sum
#java #сумма
Вопрос:
Я новичок в Java, и я пытаюсь найти сумму квадратов и кубов от 1 до 10. Но я знаю только, как найти сумму от 1 до 10, я думаю, что они похожи, но мне трудно понять это.
public class sumNumber {
public static void main (String[] args) {
final int LIMIT = 10;
System.out.println("The sum of the numbers from 1 to " LIMIT " is " sumNumber(LIMIT));
}
public static int sumNumber (int number) {
int sum = 0;
for (int i=1 ; i <= number ; i ) {
sum = i;
}
return sum;
}
}
Комментарии:
1.
sum = i * i;
для квадратов. Я предполагаю, что теперь вы знаете, как делать кубы.2. Вместо
i
того, чтобы вам нужноi * i
получить квадратi
Ответ №1:
Я предлагаю этот код :
arr = [1,2,3,4,5,6,7,8,9,10];
var sum = arr.map(x => x*x*x).reduce((a,b) => a b);
console.log(sum); // 3025
И если вам нужна более общая функция ES6 :
var sumCube = n => Array(n).fill(0).map((x, i) => Math.pow((i 1),3)).reduce((a,b) => a b);
console.log(sumCube(10)); // 3025
Ответ №2:
Попробуйте этот код для квадратов :
public static int sumNumber (int number) {
int sum = 0;
for (int i=1 ; i <= number ; i ) {
sum = Math.pow(i,2);
}
return sum;
}
Сделать Math.pow(i,3)
для кубов.
Ответ №3:
Вы добавляете еще один параметр для повторного использования кода типа like
public static int CalculateNumber (int limit,string type)
{
int result=0;
switch(type)
{
case "sum":
for (int i=1 ; i < = limit ; i )
{
result = i;
}
break;
case "square":
for (int i=1 ; i < = limit ; i )
{
result = i*i;
}
break;
case "cube":
for (int i=1 ; i < = limit ; i )
{
result = i*i*i;
}
break;
}
return resu<
}
Ответ №4:
В Java 8 вы могли бы использовать IntStream
to range
между 1
и LIMIT
, выполняя операции отображения, чтобы получить суммы. Что-то вроде,
int sum = IntStream.rangeClosed(1, LIMIT).sum();
int sum2 = IntStream.rangeClosed(1, LIMIT).map(x -> x * x).sum();
int sum3 = IntStream.rangeClosed(1, LIMIT).map(x -> x * x * x).sum();