實驗三:分別用for、while和do-while循環語句以及遞歸方法計算n!,並輸出算式

1、用for循環計算n

package for_package;java

import java.util.*;//導入含有輸入類的包函數

public class for_class {ui

/**spa

 * @param args對象

 */blog

public static void main(String[] args) {//void表明不會有返回值,參數也能夠不用寫遞歸

// TODO Auto-generated method stubio

int i;class

int fact=1;import

int n;

Scanner in=new Scanner(System.in);//使用Scanner類定義對象

System.out.println("請輸入n:");

n=in.nextInt();

for(i=1;i<=n;i++)

{

fact=fact*i;

}

for(i=1;i<=n;i++)

if(i<n)//用來控制最後一個數後面不加*

       System.out.print(i+"*");//記得加+

else

 System.out.print(i);

System.out.print("="+fact);

}

 

}

 

2、用while循環計算n

package while_package;

import java.util.*;//導入含有輸入類的包

public class while_class {

 

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

int i=1;

int fact=1;

int n;

Scanner in=new Scanner(System.in);//使用Scanner類定義對象

System.out.println("請輸入n:");

n=in.nextInt();

while(i<=n)

{

fact=fact*i;

i=i+1;

}

for(i=1;i<=n;i++)

if(i<n)//用來控制最後一個數後面不加*

       System.out.print(i+"*");//記得加+

else

 System.out.print(i);

System.out.print("="+fact);

}

}

 

3、用do-while循環計算n

package do_while_package;

import java.util.*;//導入含有輸入類的包

public class do_while_class {

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

int i=1;

int fact=1;

int n;

Scanner in=new Scanner(System.in);//使用Scanner類定義對象

System.out.println("請輸入n:");

n=in.nextInt();

do

{

fact=fact*i;

i=i+1;

}while(i<=n);//do-while語句後面有分號

for(i=1;i<=n;i++)

if(i<n)//用來控制最後一個數後面不加*

       System.out.print(i+"*");//記得加+

else

 System.out.print(i);

System.out.print("="+fact);

}

 

}

4、用遞歸方法計算n

package digui_package;

import java.util.*;//導入含有輸入類的包

public class digui_class {

public static void main(String[] args) {

int i;

int fact=1;

int n;

Scanner in=new Scanner(System.in);//使用Scanner類定義對象

System.out.println("請輸入n:");

n=in.nextInt();

fact=digui(n); //不能對類型 digui_class 中的非靜態方法 digui(int)進行靜態引用,即

for(i=1;i<=n;i++)

if(i<n)//用來控制最後一個數後面不加*

       System.out.print(i+"*");//記得加+

else

 System.out.print(i);

System.out.print("="+fact);

}

public static int digui(int n)

{

if(n==0||n==1)

return 1;

return n*digui(n-1);

}

}

 

5、心得總結與疑惑

一、Java中想要從鍵盤上輸入一個數時,要導入含有輸入類的包,即import java.util.*;,在主函數中,使用Scanner類定義對象,即Scanner in=new Scanner(System.in);n=in.nextInt();便可。

二、public static void main(String[] args) void表明不會有返回值,參數也能夠不用寫。

三、do-while語句後面有分號。

四、格式控制輸出算式時,用if語句來控制最後一個數後面不加*。

五、遞歸調用時,要有一個邊界條件,即至少有一條初始定義是非遞歸的,另外還要有一個遞推通式。

相關文章
相關標籤/搜索