Ⅰ 在java中,用遞歸方法計算n的階乘。
用Java求鍵盤輸入的數的階乘n。(遞歸演算法)packagejiecheng; importjava.util.*; //導入java.util包中的所有類{ publiclongrep(intn){ longi=0; if(n==0||n==1) i=1;
elsi=n*rep(n-1) returni; } } publicclassJie{ publicstaticvoidmain(String[]args){ intn; //此處定義要輸入的數Scanners= newScanner(System.in); //以下三行用於n的值得輸入System.out.print( "請輸入一個整數:"); n=s.nextInt(); repf= newrep(); System.out.println(n+"!="+f.rep(n)); } }
Ⅱ JAVA程序設計求1-100的階乘和
親,java的界面不太受歡迎哦~~大概按你要求做了,看看吧~~
importjava.awt.BorderLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JEditorPane;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JTextArea;
publicclassyoyoextendsJFrame{
publicstaticvoidmain(String[]args){
yoyoyo=newyoyo();
yo.show();
}
publicyoyo(){
setDefaultCloseOperation(EXIT_ON_CLOSE);//設置退出時結束程序
setTitle("計算階層和");
setSize(400,250);
setLocation(100,100);//坐標
//把控制項實例化
finalJEditorPaneedit=newJEditorPane();
finalJButtonbutton=newJButton("計算和");
finalJTextAreaarea=newJTextArea(null,"",8,18);
JPanelmyPanel1=newJPanel();//這個是第一行的布局
myPanel1.add(newJLabel("請輸入整數n:"),BorderLayout.WEST);
myPanel1.add(edit,BorderLayout.CENTER);
myPanel1.add(button,BorderLayout.EAST);
JPanelmyPanel2=newJPanel();//這個是第二行的布局
myPanel2.add(newJLabel("1至n的階乘和是:"),BorderLayout.WEST);
myPanel2.add(area);
//把上面的布局加入畫布中
this.add(myPanel1,BorderLayout.NORTH);
this.add(myPanel2,BorderLayout.CENTER);
//上面已經把界面做出來了,接下來監聽按鈕
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
intn=Integer.valueOf(edit.getText());//得到edit里的值n
intresult=0;
for(inti=1;i<=n;i++){
inta=1;
for(intj=1;j<=i;j++){
a*=j;
}
result+=a;
}
area.setText(result+"");
}
});
}
}
下面效果圖:
Ⅲ java輸入一個數n,計算n的階乘(5的階乘=1*2*3*4*5)
1、首先要理解一下階乘的公式:
n!=n*(n-1)*(n-2)*....*2*1,5!=5*4*3*2*1
#include//頭文件.h在新浪博客中無法顯示加上就可以了
intmain()
{
intt=5,i=4;//要是求其他的數的階乘的話,把t的值改為其他數,
//再把i改為(t-1)就行了
while(i>=1)
{
t=t*i;
i--;
}
printf("5的階乘結果是:%d ",t);
return0;
}
2、運行結果如下:
Ⅳ 用java求1到30 的階層和 用方法
階乘的公式是
n!=n*(n-1)*(n-2)....*2*1
這個公式可以通過一個java的循環來實現,也就是第一種方法。
for(int i=number; i>0;i--)
這個循環在i=0的時候結束, 而階乘的結果通過result*=i來計算。
public static int compute(int number)
{
int result=1;
for(int i=number;i>0;i--){
result*=i;
}
return result;
}
public static void main(String[] args)
{
System.out.println(compute(30)); //789912231223232323211
}
第二種是通過遞歸來實現階乘。
遞歸就是方法調用自身, 最終通過一個出口來結束程序的調用。
這個出口要保證程序不出現死循環。
在上面的f(x)- n*f(x-1)這里, 出口就可以設置為
if(1==number)
{return 1;}
代碼實現:
public static int cur(int number){
if(number!=0){
return number*cur(number-1);
}else return 1;
}
Ⅳ java輸入一個數n,計算n的階乘(5的階乘=1*2*3*4*5)
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
System.out.println("請輸入你需要計算的物簡數字:");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
int d = pp(i);
System.out.print(d);
}
public static int pp(int n) {
if (n < 2)
return 1 * n;
else
return n * pp(n - 1);
}
}
int pp(int n)
{
if(n<2)
return 1*n;
else
return n*pp(n-1);
}
這一好銷段, 如果n大於2,返回n*pp(n-1)的意思,就是,任何一個N的階乘等於n*比n小1的數的階乘,打個比方,比如5的階乘等於5*(4的階乘),4的階乘等罩襪褲於4*(3的階乘),而1的階乘,等於1本身。
Ⅵ java求1到N的階乘的和,N等於一百,初學JAVA,求程序代碼
對於一般的比如20以內的階乘 可以用int 但是你這個太大了
long都不夠 用double了 沒有限制輸出格野逗式 所以是科學計數的 而且用double小數點後會出現誤差 這腔顫個知道吧 文件名Sum.java 代碼如下:
package Sum;
public class Sum{
public static void main (String[] args) {
double sum=0,sumt,i,j;
for(i=1;i<=100;i++){
for(j=1,sumt=1;j<=i;j++){
sumt*=j;
}
sum+=sumt;
System.out.println(i+" "+sum+" "+sumt);
}
}
}
如果實在要求這么大的階乘 可以用數組方式解決
給你貼段代碼 以前網上某位寫的 忘記了 求階乘的
import java.util.Scanner;
public class nc030{
public static void main(String[] args) throws Exception {
int[] date = new int[100000];
date[1] = 1;
int weishu = 1; // 求出來的值的位數
System.out.println("------用數組解決大數問題---------");
System.out.println("求n!的值");
System.out.print("n=");
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= weishu; j++) {
date[j] = date[j] * i;
}
// 確保除最高位外的每位不大於9
for (int j = 1; j < weishu; j++) {
if (date[j] >= 10) {
date[j + 1] += date[j] / 10;
date[j] = date[j] % 10;
}
}
//確保最高位不大於伍脊敗9
while (date[weishu] >= 10) {
weishu++;
date[weishu] += date[weishu - 1] / 10;
date[weishu - 1] = date[weishu - 1] % 10;
}
}
System.out.print(n + "!= ");
for (int k = weishu; k >= 1; k--) {
System.out.print(date[k]);
}
System.out.println("");
}
}
啟發一下就好啦~
Ⅶ java語言求n的階乘
||樓主,系統提示你少括弧,讓你插入一個括弧在結束塊,說的很明白啊
你在最後加個括弧就沒錯啦...
publicclassexample2{
staticlongcalcFactorial(intn){
longfactorial=1;
if(n<1||n>20){
System.out.println("輸入錯誤!");
}
for(inti=n;i>=1;i--){
factorial*=i;
}
System.out.println("請輸入不超過20的正整數n:");
for(inti=1;i<=n;i++){
System.out.printf("最後結果:%d",calcFactorial(n));
System.out.println();
returnfactorial;
}
publicstaticvoidmain(String[]args){}
}//<-這個是calcFactorial方法的結束括弧,你類example2的結束括弧呢?
另外你這個方法能否運行起來?主函數應該寫在class內,而不是calcFactorial方法內
Ⅷ 高分懸賞:java 語言編寫 1到N的階乘的和
給你寫一個簡單的空謹如下:
public class test{
public static void main(String args[]){
int i=1;
int j=1;
int sum;
for(;i<=10;i++){
j=j*i;sum=sum+j;}
System.out.println("1~10的階乘叢察和為"+sum);
}
}
這是一到十滲虧茄的階乘,用時將10換做成任何即可
Ⅸ Java編程:寫出求n的階乘的方法,並算出1到7的階乘的和
Java編程:寫出求n的階乘的方法,並算出1到7的階乘的和方法:
先編寫求階乘的方版法,再通過for循環計算權1到7的階乘的和。
具體實現:
publicclassTest{
publicstaticvoidmain(String[]args){
intsum=0;//保存階乘的和
for(inti=1;i<=7;i++)
sum+=factorial(i);
System.out.println(sum);
}
//求階乘方法,傳入一個整數,返回這個整數的階乘
publicstaticintfactorial(intnum){
intresult=1;
for(inti=1;i<=num;i++){
result*=i;
}
returnresult;
}
}
Ⅹ java計算n的階乘
int n=8;
int p=n;
for(int i=n;i>1;i--){
p*=i;
}
print("%d\n",p);