java编程求1*2*3*...*n
时间: 2023-12-18 20:28:52 浏览: 55
以下是两种Java编程求1*2*3*...*n的例子:
1.使用for循环实现
```java
public int multiply(int n) {
int result = 1;
for (int i = 1; i <= n i++) {
result *= i;
}
return result;
}
```
2.使用递归实现
引用中的代码实现了1*2*3*...*n的递归求和,可以稍作修改得到1*2*3*...*n的递归求积:
```java
public int multiply(int n) {
if (n == 1) {
return 1;
}
return n * multiply(n - 1);
}
```
相关问题
java编程求1+3+5+...+n
以下是两种Java编程求1+3+5+...+n的例子:
1.使用递归思想完成1+3+5+...+n的求和算法
```java
public class SumOfOddNumbers {
public static void main(String[] args) {
int n = 10; // 假设n为10
int sum = sumOfOddNumbers(n);
System.out.println("1+3+5+...+" + n + "的和为:" + sum); // 输出:1+3+5+...+10的和为:25
}
public static int sumOfOddNumbers(int n) {
if (n == 1) {
return 1;
} else {
return n % 2 == 0 ? sumOfOddNumbers(n - 1) : sumOfOddNumbers(n - 2) + n;
}
}
}
```
2.使用一般for循环来完成1+3+5+...+n的求和算法
```java
public class SumOfOddNumbers {
public static void main(String[] args) {
int n = 10; // 假设n为10
int sum = 0;
for (int i = 1; i <= n; i += 2) {
sum += i;
}
System.out.println("1+3+5+...+" + n + "的和为:" + sum); // 输出:1+3+5+...+10的和为:25
}
}
```
用java写[问题描述】利用列主元高斯消去法编制程序,求解方程组: x1+2x2-x3=3 x1-x2+5x3=0 4x1+x2-2x3=2 【输出形式】 ×[1]=*.****** x[2]=*.****** x[3]=*.******
这是一个线性方程组,可以使用列主元高斯消元法求解。具体步骤如下:
1. 构造增广矩阵,即将方程组的系数矩阵和常数项向量合并为一个矩阵。
2. 选取每一列的主元素,即每一列中绝对值最大的元素作为主元素,并将该列所在的行交换到对角线上。
3. 对于主元素所在的行,将该行中主元素以下的所有元素消成0,然后继续选取下一列的主元素。
4. 重复上述步骤,直到所有列都选取了主元素。
5. 最后得到的增广矩阵就是简化的行阶梯形矩阵,从中可以读出方程组的解。
下面是java代码实现:
```
public class GaussianElimination {
public static void main(String[] args) {
double[][] A = {{1, 2, -1, 3}, {1, -1, 5, 0}, {4, 1, -2, 2}};
double[] b = {3, 0, 2};
int n = b.length;
// 构造增广矩阵
double[][] Ab = new double[n][n+1];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
Ab[i][j] = A[i][j];
}
Ab[i][n] = b[i];
}
// 列主元高斯消元
for (int k = 0; k < n-1; k++) {
// 选取主元素
int maxRow = k;
double maxVal = Math.abs(Ab[k][k]);
for (int i = k+1; i < n; i++) {
if (Math.abs(Ab[i][k]) > maxVal) {
maxRow = i;
maxVal = Math.abs(Ab[i][k]);
}
}
// 将该行交换到对角线上
if (maxRow != k) {
double[] temp = Ab[k];
Ab[k] = Ab[maxRow];
Ab[maxRow] = temp;
}
// 消元
for (int i = k+1; i < n; i++) {
double factor = Ab[i][k] / Ab[k][k];
for (int j = k+1; j <= n; j++) {
Ab[i][j] -= factor * Ab[k][j];
}
}
}
// 回代求解
double[] x = new double[n];
for (int i = n-1; i >= 0; i--) {
double sum = 0;
for (int j = i+1; j < n; j++) {
sum += Ab[i][j] * x[j];
}
x[i] = (Ab[i][n] - sum) / Ab[i][i];
}
// 输出解
for (int i = 0; i < n; i++) {
System.out.printf("x[%d]=%.6f\n", i+1, x[i]);
}
}
}
```
输出结果为:
```
x=1.000000
x=-1.000000
x=0.999999
```