六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 33|回复: 0

java输出fibonacci数列并求和

[复制链接]

升级  46%

5

主题

5

主题

5

主题

童生

Rank: 1

积分
23
 楼主| 发表于 2013-2-3 14:36:16 | 显示全部楼层 |阅读模式
public class Fibonacci {/** * fibonacci数列 输出元素个数确定的fibonacii数列的每一项以及该数列的和 [0] 1 1 2 3 5 8 13 21 34 56 * 90 146..........a(i-2)+a(i-1)=a(i);ai+a(i+1)=a(i+2); *  * @param args *            staic定义的是静态的代码,变量,方法,属性。存储当然是在字节码文件中 *            。不过,他的加载顺序和调用会和普通的有区别。加载过程中,static段的代码会随着类的调用或创建而被初始化。 *            比如当你new出一个对象的时候,你虽然没有调用任何方法,不过static的代码照旧会执行。 static *            修饰的属性,变量和方法,也是一样的。不过,这使得他们有两个新的特性,一是只能够被static的字段访问,二是可以通过类名访问。 */private static int LENGTH = 20;private static int length = LENGTH;private static int num1 = 0, num2 = 1, temp = 0, sum = 0;// 不可再赋值,final定义的所有对象和变量都是不可改变的,不能再次被赋值。因为java没有指针,(理论上)。final static int a = 0;public static void main(String[] args) {// TODO Auto-generated method stub// 递归实现System.out.print("********************用递归实现【fibonacii】(从零开始)********************\n");System.out.print("元素为" + LENGTH + "个的fibonacci数列为:");method3();// 循环加数组实现System.out.println();System.out.print("********************循环加数组实现fibonacii********************\n");System.out.print("元素为" + LENGTH + "个的fibonacci数列为:");method1();// 循环加变量实现System.out.println();System.out.print("********************循环加变量实现【fibonacii】(从零开始)********************\n");System.out.print("元素为" + LENGTH + "个的fibonacci数列为:");method2();}/** * 用数组实现输出元素个数确定的fibonacii数列的每一项以及该数列的和 [0] 1 1 2 3 5 8 13 21 34 56 90 * 146..........a(i-2)+a(i-1)=a(i);ai+a(i+1)=a(i+2); */private static void method1() {sum = 0;int arr[] = new int[LENGTH];// System.out.print("元素为" + LENGTH + "个的fibonacci数列为:");for (int i = 0; i < LENGTH; i++) {if (i != 0 && i != 1)arr = arr[i - 1] + arr[i - 2];elsearr = 1;sum = sum + arr;System.out.print(arr + " ");}System.out.print("\n元素为" + LENGTH + "个的fibonacci数列的和为:" + sum + "\n");}/** * 用变量实现输出元素个数确定的fibonacii数列的每一项以及该数列的和 [0] 1 1 2 3 5 8 13 21 34 56 90 * 146..........a(i-2)+a(i-1)=a(i);ai+a(i+1)=a(i+2); */private static void method2() {sum = 0;num1 = 0;num2 = 1;// System.out.print("元素为" + LENGTH + "个的fibonacci数列为:");for (int i = 1; i <= LENGTH; i++) {if (i == 1) {sum = sum + num1;System.out.print(num1 + " ");} else if (i == 2) {sum = sum + num2;System.out.print(num2 + " ");} else {// 1.num2的值保存下来,下一项(即第i项)的值num2=num1+num2;num1=保存下来的num2;temp = num2;num2 = num1 + num2;num1 = temp;sum = sum + num2;System.out.print(num2 + " ");}}System.out.print("\n元素为" + LENGTH + "个的fibonacci数列的和为:" + sum);System.out.println();}/** * 用递归实现输出元素个数确定的fibonacii数列的每一项以及该数列的和 [0] 1 1 2 3 5 8 13 21 34 56 90 * 146..........a(i-2)+a(i-1)=a(i);ai+a(i+1)=a(i+2); */private static void method3() {if (length == 0) {System.out.print("\n元素为" + LENGTH + "个的fibonacci数列的和为:" + sum);System.out.println();} else {if (length == LENGTH) {sum = sum + num1;System.out.print(num1 + " ");} else if (length == LENGTH - 1) {System.out.print(num2 + " ");sum = sum + num2;} else {// 1.num2的值保存下来,下一项(即第i项)的值num2=num1+num2;num1=保存下来的num2;temp = num2;num2 = num1 + num2;num1 = temp;sum = sum + num2;System.out.print(num2 + " ");}length--;method3();}}}[code="java"]
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表