`

用for循环输出斐波那契数列并求前N项之和

    博客分类:
  • JAVA
阅读更多

原题如下:

 

求斐波那契数列前n项的和值,斐波那契数列如下:
       1123581321……
前两位数是1,从第三位开始每位数都是前两位数之和。
import java.util.Scanner;

public class FibNumber {

	public static void main(String[] args) {
		System.out.print("请输入要求的项数N:");
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int[] f = new int[n];	//定义一个整形数组用于存放斐波那契数,好像用整形当项数N大于45时会发生溢出,产生错误结果
		int sum = 0;			//存放前N项之和
		
		if(n<=0) {				//处理特殊情况n<=0
			System.out.println("项数必须是大与0的整数!");
		} else if(n==1) {		//处理特殊情况n=1
			sum = 1;
			System.out.println("斐波那契数列如下:\n1");
			System.out.println("前" + n + "项之和为: " + sum);
		} else if(n==2) {		//处理特殊情况n=2
			sum = 2;
			System.out.println("斐波那契数列如下:\n1	 1");
			System.out.println("前" + n + "项之和为: " + sum);
		} else {				//处理一般情况n>=3
			System.out.println("斐波那契数列如下:");
			for(int i=0; i<f.length; i++) {
				f[0] = 1;
				f[1] = 1;
				for(int j=3; j<=n; j++)
				f[j-1] = f[j-2] + f[j-3];	//斐波那契数列各项之间的关系,不能用f[j]=f[j-1]+f[j-2],会发生数组越界异常
				System.out.print(f[i] + "\t");
				sum = sum + f[i];
				if((i+1)%12==0) {	//控制12个数为一行
					System.out.println();
				}
			}
			System.out.println();  //输出一个空行再显示前N项之和
			System.out.println("前" + n + "项之和为: " + sum);
		}			
	}
}
 以上做法虽然可以达到目的,但不是最好的办法。大家有更好的方法希望多多交流。

 

0
2
分享到:
评论
2 楼 xyfwjk 2011-07-24  
long[] array=new long[20]; //整型放不下所以用long

long f1=1;
long f2=1;
array[0]=1;
array[1]=1;
//前20个数字赋值
for(int i=2;i<20;i++){
        f2=f1+f2;
	f1=f2-f1;
	array[i]=f2;
}
//求和
int sum=0;
for(int j=0;j<array.length;j++){
     sum+=array[j];
}
1 楼 cheeruplc 2011-07-24  


这个可以吧,不是必须写成f(n-1)=f(n-2)+f(n-3);吧
写个递归:这个用来计算第n个斐波那契数
public int fib(int n)
{
if (n==0||n==1) return f(n)=1;
if (n>1) return f(n)=f(n-1)+f(n-2);
}

写个循环求和
long sum=0;
for(int i=0;i<n;i++)
{
sum+=fib(n);
}

这样的思路应该没有问题。

相关推荐

    python斐波那契数列第n项.docx

    python斐波那契数列第n项 斐波那契数列是指从0和1开始,后面的每一项都是前面两项的和。即:0、1、1、2、3、5、8、13、21、34、55、89、144、233、377、610……以此类推。这个数列在数学上有着重要的应用,也是...

    菲波那切数列前n项求和

    菲波那切数列的前n项求和……用for循环做法

    剑指offer—07斐波那契数列(Python)

    【题目】大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)n&lt;=39。 【思路】斐波那契数列:第n项是第n-1项和第n-2项的和; 当 n=0,f(n)=0; n=1,f(n)=1; n&gt;1,f(n...

    python实现斐波那契数列的方法示例

    F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 。 1. 元组实现 fibs = [0, 1] for i in range(8): fibs.append(fibs[-2] + fibs[-1]) 这能得到一个在指定范围内的斐波那契数列的列表。 2. 迭代器...

    剑指Offer(Python多种思路实现):斐波那契数列

    题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n&lt;=39  n=0时,f(n)=0 n=1时,f(n)=1 n&gt;1时,f(n)=f(n-1)+f(n-2) 解题思路一:基于循环【推荐】 # 基于循环【推荐】 ...

    用Python实现斐波那契(Fibonacci)函数

    Fibonacci斐波那契数列,很简单,就是一个递归嘛,学任何编程语言可能都会做一下这个。 最近在玩Python,在粗略的看了一下Learning Python和Core Python之后,偶然发现网上有个帖子Python程序员的进化写的很有意思。...

    java经典小程序,java入门100例!.doc

    1,编写程序,判断给定的某个年份是否是闰年。...12、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值 16、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和 打印出所有的可能 8、完成九宫格程序

    剑指offer算法python版

    大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n&lt;=39 解题思路:找规律 设函数f(n) 当 n=0时 f(0) =0 当 n=1时 f(1) =1 当 n=2时 f(2) =1 当 n=3时 f(3) =...

    达内 coreJava 习题答案

    12、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值 1 1 2 3 5 8 13 21 34 规律:一个数等于前两个数之和 //计算斐波那契数列(Fibonacci)的第n个值 public class Fibonacci{ public static void main...

    《数据结构 1800题》

    16.设m.n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。例f(5,3)=5, 有 5种表示方式:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。 ①以下是该函数的程序段,请将未完成的部分填入,...

    〖程序设计基础〗练习题2及答案

    12. 以下方法 m 的功能是求两参数之积的整数部分。 int m ( float x, float y ) { __________________; } 13. Java 源程序文件编译后产生的文件称为________文件,其扩展名为 ___________ 。 三、判断题( 每小题1分...

    C++大学教程,一本适合初学者的入门教材(part2)

    3.13 使用递归举例:Fibonacci数列 3.14 递归与迭代 3.15 带空参数表的函数 3.16 内联函数 3.17 引用与引用参数 3.18 默认参数 3.19 一元作用域运算符 3.20 函数重载 3.21 函数模板 3.22 有关对象的思考:...

    C++大学教程,一本适合初学者的入门教材(part1)

    3.13 使用递归举例:Fibonacci数列 3.14 递归与迭代 3.15 带空参数表的函数 3.16 内联函数 3.17 引用与引用参数 3.18 默认参数 3.19 一元作用域运算符 3.20 函数重载 3.21 函数模板 3.22 有关对象的思考:...

    PaperTest Q&amp;A笔试综述

    7.斐波那契数列 141 8.求两个数组中的相同元素 141 9.查找一个中间大的数… 141 10.编写类 String的构造析构赋值函数…,…,…,,, 141 11.输入两个宇符串,输出第二个字符串在第一个字符串中的位序 143 12....

Global site tag (gtag.js) - Google Analytics