各位各位帮忙瞅瞅,这个该咋整
这个是我的代码,出现的问题是:运行代码的时候没办法求阶乘,只能输入,不能运算
求帮忙解答 靴靴啦~
public static void main(String[] args) {
for (int i = 2; i <= 10; i += 2) {
if (i != 8) {
System.out.println(i + "阶乘为" + jiec(i));
}
}
}
public static int jiec(int i) {
int n = 1;
for (int j = 1; j <= i; j++) {
n *= j;
}
return n;
}
应该把输入放入主程序,函数里n接收你输入的值,而不必再获取。
而且你别修改函数名,人家是fact你不要改成jiec
你可以这么写
int fact(int n)
{
if (n == 1) return 1;
return fact(n - 1) * n;
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader sr = new BufferedReader(new InputStreamReader(System.in));
String s[] = sr.readLine().split(" ");
int n = Integer.parseInt(s[0]);//优惠券的个数
int pnum [] = new int[n]; //存优惠券的面值
ArrayList<Integer> list = new ArrayList(); //两个列表
ArrayList<Integer> list1 = new ArrayList();
for(int i=0;i<n;i++) {
list.add(Integer.parseInt(s[i+1])); //存放优惠券
}
String ss[] = sr.readLine().split(" ");
int m = Integer.parseInt(ss[0]); //商品的个数
int mnum[] = new int[m]; // 商品的的整数价值
for(int i=0;i<m;i++) {
list1.add(Integer.parseInt(ss[i+1]));
}
int sum=0;
Collections.sort(list); //开始正序
Collections.sort(list1);
for(int i=0;i<n;i++) {
if((list.get(i)<0&&list1.get(i)<0)) { //都小于0
sum=sum+(list.get(i)*list1.get(i));
}else{
break;
}
}
Collections.reverse(list);//倒叙
Collections.reverse(list1);
int x=m>n? n:m; //判断一下那个更多
for(int i=0;i<x;i++) {
if((list.get(i)>0&&list1.get(i)>0)) { //都大于零的
sum=sum+(list.get(i)*list1.get(i));
}
}
System.out.println(sum);
}
}
注意:最后一个内存超限,我把顺序表改成数组,还是同样内存超限