JAVA作业:编写一个程序,求满足1+2!+3!+...+n!<=9876的最大整数n

在线等高手!感激不尽!

第1个回答  2011-04-03
楼上的两个答案都不对。都忘了将 n -1 。

public class TestNFactorial {

public static void main(String[] args){
int target = 9876;
run(target);
}

private static void run( int target) {
int sum = 0 ;
int n=0;
while(sum <= target){
n++;
sum+=computeFactorial(n);
}
System.out.println("the n is : " +( n -1) );
}

private static int computeFactorial(int n) {
if(n==1|| n ==0 ){
return 1;
}else{
return n * computeFactorial( n-1 );
}
}
}本回答被提问者采纳
第2个回答  2011-04-03
public class Test {
public static void main(String[] args) {
int max = 9876;
int current = 0;
int index = 1;
while (current <= max) {
current += calc(index++);
System.out.println(current);
}
System.out.println("符合要求的最小整数是:"+(index-1));
}

public static int calc(int num) {
int result = 1;
for (int i = 1; i <= num; i++) {
result *= i;
}
return result;
}
}
第3个回答  2011-04-03
public class TestNum {
public int jieCheng(int n){
if(n!=1)
return n*jieCheng(n-1);
else return 1;
}

public int testNum(int num){
int n=0;
int total=0;
while(total<=num){
n++;
System.out.println(n+"的阶乘是"+jieCheng(n));
total+= jieCheng(n);

}
return n;
}

public static void main(String[] args){
TestNum tn = new TestNum();
System.out.println(tn.testNum(9876));
}
}
第4个回答  2019-03-17
public
class
Test
{
public
static
void
main(String[]
args)
{
int
max
=
9876;
int
current
=
0;
int
index
=
1;
while
(current
<=
max)
{
current
+=
calc(index++);
System.out.println(current);
}
System.out.println("符合要求的最小整数是:"+(index-1));
}
public
static
int
calc(int
num)
{
int
result
=
1;
for
(int
i
=
1;
i
<=
num;
i++)
{
result
*=
i;
}
return
result;
}
}
第5个回答  2011-04-03
public static void main(String[] args) {
System.out.println(t(9876));
}

public static int t(int max) {
return t3(1, 0, max);
}

public static int t3(int n, int y, int max) {
y = y + jc(n);
if (y > max) {
return n - 1;
}
return t3(n + 1, y, max);
}

public static int jc(int n) {
if (n != 1)
return n * jc(n - 1);
return 1;
}

最后结果为 7

JAVA作业:编写一个程序,求满足1+2!+3!+...+n!<=9876的最大整数n
int target = 9876;run(target);} private static void run( int target) { int sum = 0 ;int n=0;while(sum <= target){ n++;sum+=computeFactorial(n);} System.out.println("the n is : " +( n -1) );} private static int computeFactorial(int n) { if(n==1|| n ==...

编写一个应用程序,求满足1+2!+3!+……+你!<=9876的最大数n
定义一个函数用来求 n!,该函数包含一个for 1..n 的循环 然后在写一个循环,从1!加起,加完判断下是否大于 9876,如果大于就退出循环。循环里面把n存到一个变量里面,最后打印n就行了 我没学过 Java,所以不会写。你刚入门一定要试着自己写程序,写着写着就简单了,Java据说学起来还是很快的...

java一个小程序运行不出来帮我看看那里错啦??
int ji = 1;for (int j = 1; j <= i; j++) { ji *= j;} sum += ji;} while (sum < 9876);System.out.println(--i);}

编程把"1、2、3、4、5、6、7、8、9"分别放到下面的9个方框里使算式成立...
using namespace std;int const n=5;int main(){ int i,j,k;set<char> str;set<char>s;for(i=1;i<=9;i++)str.insert('0'+i); \/\/insert在set里面定义过了,所以可以直接用,插入一个元素 for(i=1234;i<=9876;i++)for(j=1;j<=9;j++){ k=i*j;if(k>9876)continue;s.i...

十六进制最大是多少?
第3位 1×83=512 十六进制转换十进制 16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,...

九连环资料,越多越好!
一、第n-1个环在架上;二、第n-1个环前面的环全部不在架上。玩九连环就是要努力满足上面的两个条件。解下九连环本质上要从后面的环开始下,而先下前面的环,是为了下后面的环,前面的环还要装上,不算是真正地取下来。我们先从最简单的一连环开始。解一连环需要1步:一下。解二连环需要2步:二下,一下。

...并注意发现规律.1×8+1=912×8+2=98123×8+3=9871234×8+4=1234...
1、×8+1=9;12×8+2=98;123×8+3=987;1234×8+4=9876;12345×8+5=98765;123456×8+6=987654;1234567×8+7=9876543;12345678×8+8=98765432;通过计算发现规律为:从1开始的几个连续自然数组成的几位数乘8加几,结果是从9递减1的几个连续自然数组成的几位数,得数的位数等于所加的...

编程的进制有多少种?分别是怎样计算的?举例说明!
你尽可以给他这么一个算式:1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 6.2.6 十六进制数的表达方法如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。C,C++规定,16进制数必须以 0x开头。比如 0x1表示一个16...

1x8+1=9,12x8+2=98,123x8+3=987,1234x8+4=9876照样子继续
12345x8+5=98765 123456x8+6=987654 1234567x8+7=9876543 12345678x8+8=98765432

二年级数学下册。 用1,2,3,4,5,6,7,9写一个算式相加要等于10000 例:34...
4321+5679

相似回答