不知道lz在factory(int i)方法里面定義一個x=0是到底要鬧哪樣。明明是要根據(jù)傳來的參數(shù)進行迭代判斷。改了一下,希望對你有用(下次添加代碼的時候要注意整潔,不然會干擾回答的~)。
黃石網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),黃石網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為黃石1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的黃石做網(wǎng)站的公司定做!
import java.util.Scanner;
public class factorial_2 {
public static void main(String[] args) {
System.out.print("請輸入一個整數(shù):");
Scanner n1 = new Scanner(System.in);
int n = n1.nextInt();
System.out.println();
System.out.print(n + "的階乘為:");
int sum = factorial(n);
System.out.print(sum);
}
private static int factorial(int i) {
//int x = 0;
if ( i == 1) {
return 1;
} else {
int temp;
temp = (int) i * factorial(i - 1);
return temp;
}
}
}
提醒樓主注意的是要注意int范圍的問題。因為最后接收結(jié)果的是一個int sum類型的值,所以它可以解決的階乘數(shù)也是有范圍的。有必要的話可以改成Integer.
具體如下:
public static double squareRoot(double n){
double x =1。
double temp =1。
do{。
temp = x。 ? ? ? ? ? ?
//保存上一次計算的值。
x = 0.5*(x + n/x)。 ?
//這個就是牛頓迭代法的基本公式。
}while(Math.abs(x - temp)0.00001)。? ? ?
//如果兩次求值差的絕對值小于0.00001則結(jié)束循環(huán)。
return x。
這個是求平方根的函數(shù),n為要求的數(shù)。
輸出保留3位小數(shù):System.out.printf("%.3f",x)。
你好,下面我給出算法思想及其實現(xiàn):
public class Divide {
/*
* 首先我們要理解計算機是怎么做除法的,計算機只能進行加法和加法運算
* 所以我們用減法去模擬除法運算
* 這里為了簡單,只演示整數(shù)的相除運算
* 浮點數(shù)預(yù)算同理,就是控制精度問題
*/
/*
* param a 被除數(shù)
* param b 除數(shù)
* 返回值 商
*/
public static int divide(int a, int b){
if(a0 || b0){
throw new ArithmeticException("參數(shù)必須為非負整數(shù)") ;
}
if(b == 0){
throw new ArithmeticException("除數(shù)不能為0") ;
}
a -= b ;
if(a = b){ //這里就是控制精度,整數(shù)的比較簡單
return divide(a,b) ; //遞歸調(diào)用
}
return a;
}
public static void main(String[] args) {
System.out.print("13 / 5 = " + divide(13,2) );
}
}
not null 并不代表 size()或者length 就是0 的。比如 New LinkedList();初始化出來的是0
1、迭代主要是對一些集合類如List、map等進行迭代
2、獲取集合類對象,如List
dataList
3、獲取dataList的迭代器
4、利用while循環(huán)迭代
示例:
List
dataList
=
new
ArrayList
dataList.add("北京");
dataList.add("天津");
//獲取dataList的迭代器
Iterator
it
=
dataList.iterator();
while(it.hasNext()){
System.out.println(it.next());
}