
正文
java代码编程经典迭代 java迭代语句
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java 编程:用迭代法实现阶乘(Factorial):n!=n*(n
不知道lz在factory(int i)方法里面定义一个x=0是到底要闹哪样。明明是要根据传来的参数进行迭代判断。改了一下,希望对你有用(下次添加代码的时候要注意整洁,不然会干扰回答的~)。
import java.util.Scanner;
public class factorial_2 {
public static void main(String[] args) {
System.out.print("请输入一个整数:");
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范围的问题。因为最后接收结果的是一个int sum类型的值,所以它可以解决的阶乘数也是有范围的。有必要的话可以改成Integer.
相关问答
Q1: 在java中迭代是什么意思
重复的反馈某一过程(操作)叫迭代,
在java中,就是循环重复的进行某一操作,比如一个程序要累加1到100的和,
那么只要定义一个变量sum,让它重复的进行累加操作:
int sum =0;
for( int i=1; i=100; i++ ){
sum = sum +i;
}
其中执行一次sum = sum + i ;就称之为一次迭代,每一次迭代得到的结果(sum + i 的和)会作为下一次迭代的初始值(结果赋值给sum变量后,这个变量又作下一次迭代的初始值);这就是迭代与普通循环的区别。
Q2: Java中迭代列表中数据时几种循环写法的效率比较
Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较。虽然网上已经有了类似的文章,但是对他们的结论并不认同。常见的实现方法:1.for循环:for(int i = 0; i list.size(); i++) for(int i = 0, size = list.size(); i size; i++) 一般人都会认为第二种写法效率高。 2.foreach:for(Object obj : list) 这是一种简洁的写法,只能对列表进行读取,无法修改。 3.while:int size = list.size(); while(size-- 0) 4.迭代: Object iter = list.iterator(); while(iter.hasNext()) { iter.next(); }测试代码: 针对以上几种方法编写的测试代码。 public static void main(String[] args) { ListInteger list = new ArrayListInteger(); int runTime = 1000;//执行次数 for (int i = 0; i 1000 * 1000; i++) { list.add(i); } int size = list.size(); long currTime = System.currentTimeMillis();//开始分析前的系统时间 //基本的for for(int j = 0; j runTime; j++) { for (int i = 0; i size; i++) { list.get(i); } } long time1 = System.currentTimeMillis(); //foreach for(int j = 0; j runTime; j++) { for (Integer integer : list) { } } long time2 = System.currentTimeMillis(); for(int j = 0; j runTime; j++) { //while int i = 0 ; while(i size){ list.get(i++); } } long time3 = System.currentTimeMillis(); for(int j = 0; j runTime; j++) {//普通for循环 for (int i = 0; i list.size(); i++) { list.get(i); } } long time4 = System.currentTimeMillis(); for(int j = 0; j runTime; j++) {//迭代 IteratorInteger iter = list.iterator(); while(iter.hasNext()) { iter.next(); } } long time5 = System.currentTimeMillis(); long time = time1 - currTime ; System.out.print("use for:" + time); time = time2 - time1; System.out.print("\tuse foreach:" + time); time = time3 - time2; System.out.print("\tuse while:" + time); time = time4 - time3; System.out.print("\tuse for2:" + time); time = time5 - time4; System.out.print("\tuse iterator:" + time); System.out.println(); }输出结果(JDK1.6):1.use for:8695 use foreach:17091 use while:6867 use for2:7741 use iterator:14144 2.use for:8432 use foreach:18126 use while:6905 use for2:7893 use iterator:139763.use for:8584 use foreach:17177 use while:6875 use for2:7707 use iterator:14345 结论:1.针对列表的 foreach的效率是最低:耗时是普通for循环的2倍以上。个人理解它的实现应该和iterator相似。2. list.size()的开销很小:list.size()次数多少对效率基本没有影响。查看ArrayList的实现就会发现,size()方法的只是返回了对象内的长度属性,并没有其它计算,所以只存在函数调用的开销。对数组的测试:将代码中的列表list换做数组再进行测试(iterator不适用),发现耗时基本为0。说明: 3. 列表的get()方法开销不少应该主要是检测数据合法性时产生的。将执行次数增加100万倍,这时可以看出结果基本相等,并没有明显的差异。说明:4. 数组length也没有开销可见数组长度并不是每次执行的时候都要计算的。联想一下Java创建数组的时候要求必须指定数组的长度,编译处理的时候显然没有把这个值抛弃掉。网上有一篇类似的文章,它居然得出了一个foreach执行效率最高的结论。
Q3: JAVA迭代是什么意思
java有个enum类型的,不过个人觉得用处不是很大,你就在里面声明几个可能会用到的东西..其实如果不用枚举也没什么大碍吧. 迭代很重要,Collection接口继承自iterable接口,iterable接口中定义了iterate(迭代)方法,所以一切实现Collection接口的类必须提供iterate方法。 迭代的概念也不是很难,就是说如果我一张链表里面存了100个元素,你可以用迭代器不断的区访问链表中的元素。 for example LinkedList list = new LinkedList //suppose we have added 100 elements for(Iterator itr = list.iterator;itr.hasNext();){ System.out.println(itr.next()); }
Q4: java 迭代程序
java.lang.StackOverflowError 是递归太深的意思 !通过报这个错是你的递归写错了!
就是这里
else{
return fun(x)+fun(x-1);
}
你fun(x)里面又调用 f(x)这样就会无限递归下去!自然报错
不知道你想要怎么的效果
照你的意思应该是 fab 数列 那应该是 return fun(x-1)+fun(x-2);
Q5: 用迭代法怎么编写Java程序:牛顿迭代法
public static void main(String[] args) {
Test test = new Test();
test.addNum();
}
private int num = 0;
public void addNum() {
num++;
if(num==10){
System.exit(0);
}else{
System.out.println(num);
addNum();
}
} 一个 很简单的程序 ! 其实迭代很简单 就是 判断一些条件 然后 自己调用自身!就行了
java代码编程经典迭代的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java迭代语句、java代码编程经典迭代的信息别忘了在本站进行查找喔。






