Java基礎——【習題二】函式練習題
【習題二】函式
1、定義一個方法能夠判斷並返回兩個整數的最大值,並呼叫自己的方法測試是否正確。
package t2;
public class MaxMethod{
public static void main(String [] args){
System.out.println(Max(10,9));//呼叫Max函式
}
public static int Max(int a,int b){//定義一個函式能夠判斷並返回兩個整數的最大值
int max;
if(a>b){ max=a;}
else {max=b;}
return max;
}
}
2、漢諾塔問題:
package t2; public class Hanoi{ public static void main(String []args){ hanoi('A','B','C',5); } public static void hanoi(char a,char b,char c,int n){ //定義一個方法 柱子a,柱子b,柱子c,n片圓盤 //a柱子移到c柱子,b柱子作為中間臨時存放 if(n==1){ System.out.println("move from"+" a "+"to"+" c "); }else{ hanoi(a,c,b,n-1); System.out.println("move from"+" a "+"to"+" b "); //移動n-1個圓盤從a到b,c做為中間臨時的存放 System.out.println("move from"+" a "+"to"+" c "); //把最大的圓盤從a移到c hanoi(b,a,c,n-1); System.out.println("move from"+" a "+"to"+" b "); //移動n-1個圓盤從b到c,a做為中間臨時的存放 } } }
3、編寫一個方法用於求任意兩個正整數的最大公約數,呼叫此方法求16和24的最大公約數。
備註:求最大公約數使用輾轉相除法,我國古代數學家秦九韶1247年在《數書九章》中記載了此方法,其處理過程如下:
(1)提供兩個數m和n
(2)以n除m,求得餘數r(r=m%n)
(3)判斷r是否為0,若r=0,此時的n值即為最大公約數,計算結束。若r≠0,更新被除數和除數,n送m(即m=n),r送n(即n=r),轉到(2)。
r=m%n;
while(r!=0){m=n;n=r;r=m%n }
package t2; import java.util.Scanner; public class MaxGys{ public static void main(String []args){ Scanner sc=new Scanner(System.in); System.out.print("請輸入第一個數:"); int n=sc.nextInt(); System.out.print("請輸入第二個數:"); int m=sc.nextInt(); maxgys(n,m); } public static void maxgys(int n,int m){ int r=n%m; if(r==0){ System.out.println(m+"是最大公約數。"); }else{ n=m; m=r; maxgys(n,m); } }
/*
public static int maxFactor(int m,int n){
int r=m%n;
while(r!=0){
m=n;
n=r;
r=m%n;
}
return n;
}
public static void main(String[] args) {
int f=maxFactor(16, 24);
System.out.println(f);
}
*/
}
4、編寫遞迴方法 getPower(int x,int y),用於計算x的y次冪(假定x,y都是正整數)(不要使用Math.pow()),在main主方法中呼叫它求2的10次冪。
package t2;
public class Power{
public static void main(String []args){
System.out.println(getPower(2,10));
}
public static int getPower(int x,int y){
/*
if(y==1){
return x;
}else{
return x*getPower(x, y-1);
}
*/
if(y==0){
return 1;
}else{
return x*getPower(x,y-1);
}
}
}
5、菲波那切數列:斐波那契數列(Fibonacci sequence),又稱 黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“ 兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以 遞迴的方法定義:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)。Fibonacci數列的遞迴實現演算法;
package t2;
public class Fibonacci{//1、1、2、3、5、8、13、21、34、……
public static void main(String []args){
System.out.println(Fibonacci(3));
}
public static int Fibonacci(int n){
if(n==0||n==1){
return 1;
}else if(n>=2){
return Fibonacci(n-1)+Fibonacci(n-2);
}
return Fibonacci(n);
}
}
6、不使用Math類提供的相關方法,自己編寫一個方法public static int round(double n)能夠對小數n進行四捨五入返回一個整數。注意考慮n的正負。用一些正的或負的的小數測試一下自己編寫的方法是否正確。(基本思想:n是一個小數,那麼(int)n則得到n的整數部分,n減去自己的整數部分以後,通過跟正或負0.5比較大小,可決定四捨五入後的整數是多少)
package t2;
import java.util.Scanner;
public class Method {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("請輸入一個小數(將輸出四捨五入後的整數):");
double n=sc.nextDouble();
System.out.println(n+"四捨五入後的結果是:"+round(n));
}
public static int round(double n){
int p=(int)n;
if(n>0){
if(n-p>=0.5){
return p+1;
}else{
return p;
}
}else{
if(n-p<=-0.5){
return p-1;
}else{
return p;
}
}
}
}
相關推薦
Java基礎——【習題二】函式練習題
【習題二】函式 1、定義一個方法能夠判斷並返回兩個整數的最大值,並呼叫自己的方法測試是否正確。 package t2; public class MaxMethod{ public static v
Java基礎——【習題一】流程控制練習題
【習題一】流程控制練習題 1、要求使用者輸入一個年份,判斷並輸出該年份是閏年還是平年。 提示:判斷閏年的條件為:(year%4==0&&year%100!=0) ||(year%400
Java基礎【Eclipse使用】
第8天 Java基礎語法 今日內容介紹 Eclipse開發工具 超市庫存管理系統 第1章 Eclipse開發工具 Eclipse是功能強大Java整合開發工具。它可以極大地提升我們的開發效率。可以自動編譯,檢查錯誤。在公司中,使用的就是Eclipse進行
java基礎-中級(二)【泛型】
目錄 2、泛型 2.1 泛型方法 2.2 泛型類 2.3 泛型介面 2.4 泛型的約束與侷限 2.5 泛型型別繼承規則 2.6 Class<T> 2、泛型 Java 泛型(generics)是 JDK 5 中引入的一個新特性, 泛型
java基礎-初級(二)【面向物件與類】
目錄 2、面向物件與類 2.1 面向物件思想 2.2 類與物件 2.3 成員和區域性變數 2.4 匿名物件 2.5 類的訪問許可權修飾符 2.6 static關鍵字-靜態域、靜態
Java基礎【02】建構函式
作用: 建立物件時呼叫的函式。可以給物件初始化,建立物件都必須通過建構函式初始化。可知第一:用於建立物件;第二:用於初始化物件。 一個類中,如果沒有定義過建構函式,該類中會預設一個空參
Java基礎【二維陣列例題(1)——表格求和】
package com.cc.java;/* * 練習2:獲取arr陣列中所有元素的和。使用for的巢狀迴圈即可。j=0j=1j=2j=3i=0382i=127i=29016 */public class TestGetSum {public static void main
【java並發核心二】Exchanger的使用
system exce str inf info png 簡單 import ger 類 Exchanger 的功能可以使2個線程之間傳輸數據,比生產者/消費者模式方便。 Exchanger類的結構很簡單,重點就是exchange()方法。 exchange()方法是阻塞執
Java基礎 【Arrays 類的使用】
折半查找 demo package 類的使用 col scl arrays pre sort package com.zuoyan.sort; import java.util.Arrays; public class ArraysClassDemo {
【Java基礎-實現連結串列】定義連結串列和連結串列的遍歷
一.定義一個節點 建立一個節點類,類中定義兩個屬性,一個屬性用來存放資料,一個屬性用來存放下一個節點 class Node { String data = null; //連結串列儲存的資料 Node next = null; //下一個節點 public Node (
【ECLIPSE 二】eclipse java web 版本修改問題 3.0-2.5
這個是正常修改的,但是高版本向低版本改的時候有會報錯:cannot change version of project facet dynamic web module to 2.5 可以修改專案中的 .settings/org.eclipse.wst.
Java 基礎【18】 反射與內省
1.反射和內省的概念定義 Java 反射機制容許程式在執行時載入、探知、使用編譯期間完全未知的 class,核心類 java.lang.Class。 通過把指定的類中各種元素成分都對映成 java.lang.reflect 反射包中的
Java基礎【04】常用API——String相關API
1.int length() package string; /** * int length() * 該方法可以返回當前字串的長度(字元個數) * @author adminitartor * */ public class LengthDemo { publ
Java基礎【05】常用API——Integer相關API
1.Integer Integer.valueOf(int i); package integer; /** * java有8個基本型別,但是它們不具備面向物件的特性,所以 * 不能直接參與面向物件開發,那麼在實際使用上會出現很多的 * 不便,為此java為8個基本型
Java基礎【08】常用API——RandomAccessFile相關API
java.io.RandomAccessFile:專門用來讀寫檔案資料的類,其讀寫是基於指標進行的,即RAF總是在指標指向位置讀取或者寫出位元組。 RAF有兩種常用的模式: * r:只讀模式,只能讀取檔案資料,不可以做寫操作。 * rw:讀寫模式,即可讀也可寫。 1.寫
【十二】python基礎之檔案操作
給要開啟的檔案物件指定一個名字,這樣可在完成操作之後迅速關閉檔案,防止一些無用的檔案物件佔用記憶體 1 2 3 4 5 file_object = open('thefile.txt') try: all_the_text = fil
Java基礎【Eclipse的使用】jar包的匯入匯出 文件註釋匯出幫助文件 類、抽象類、介面作為方法引數 不同修飾符混合使用細節
第14天面向物件 今日內容介紹 Eclipse常用快捷鍵操作 Eclipse文件註釋匯出幫助文件 Eclipse專案的jar包匯出與使用jar包 不同修飾符混合使用細節 辨析何時定義變數為成員變數 類、抽象類、介面作為方法引數 類、抽象類、介面作為
java基礎【內部內 final static 四種修飾符 匿名物件 包的宣告與訪問】
第13天面向物件 今日內容介紹 final static 匿名物件 內部類 包的宣告與訪問 四種訪問修飾符 程式碼塊 第1章 final關鍵字 1.1 final的概念 繼承的出現提高了程式碼的複用性,並方便開發。但隨之也有問題,
Java基礎【面向物件 構造方法 this super關鍵字】
第12天面向物件 今日內容介紹 構造方法 this super 第1章 構造方法 我們對封裝已經有了基本的瞭解,接下來我們來看一個新的問題,依然以Person為例,由於Person中的屬性都被private了,外界無法直接訪問屬性,必須對外提供相應的
Java基礎【面向物件 介面 多型】
第11天面向物件 今日內容介紹 介面 多型 第1章 介面 1.1 介面概念 介面是功能的集合,同樣可看做是一種資料型別,是比抽象類更為抽象的”類”。 介面只描述所應該具備的方法,並沒有具體實現,具體的實現由介面的實現類(相當於介面的子類)來完成。這樣