标签:
首先注意:
代码是从上往下,从左往右执行的!!
这是for循环写的 m=任意数.代表1~多少位的和
public class Fei_Bo_Na_Qi{
public static void main(String[] args){
int m = 30; //这里代表1~30位的和
System.out.println( "斐波那契数列的第 "+m+" 位数为: "+m1(m) );// 在输出的时候调用函数
}
public static int m1(int i){ //创建方法
if (i == 1) { //if如果... 如果等于1 就执行下面java语句
return 0; // 返回值 为0,返回给m1 并且结束一下java语句
}
if (i == 2) { //if如果... 如果等于2 就执行下面java语句
return 1; //返回值 为1 并结束一下Java语句
} else { //如果不==2 也不==1 就执行一下java语句
int a = 0; // 在这里代表斐波那契数列的第一个数 用int数据类型 声明一个变量 变量名字为a 并赋值为0
int b = 1; // 这里代表斐波那契的第二个数
int c = 0; //这里代表斐波那契的第三个数
int e = 0;
for(int j=3; j <=i ; ++j){ //for循环 这里这个i-2
是什么意思呢?因为如果等于3的时候,是这里运算的第一个,就是等于3的时候,在这里等于1 额 可以这么说吧 因为等于1 和 2
的时候都在上面输出,要是在这里不减去2的话,会循环三次 那就影响结果了
//recycle code block
c=a+b; // 把a和b的和 赋值给c 因为除了前两位 后面的每一位都是由前两位的和组成的
e+=c; //这是把前N列的数加起来
System.out.println( a+"+"+b+"斐波那契数列的第 "+j+" 位的值为"+"="+c ); //输出 a+b=c
a=b; //b代表数列的第二个,a代表数列的第一个,c代表数列的第三个 我吧b赋值给a a就等于第二个了
b=c; //再把c赋值给b b就等于数列的第三个了 那么下次循环,c 就是数列的第四个了 一次类推
}
System.out.println( "斐波那契数列的前 "+ i +" 位数的和为: "+e ); //这是输出前N列的和
return c; //等输出完设置的数列 再把c 返回到m1 再返回到方法的调用出(也就是main方法的输出哪里,因为在那里调用的,)方法不调用不执行,调用才执行,并把值返回到方法的调用出
}
}
}
这是递归写的
public class Qian_N_Wei_He{
public static void main(String[] args){
int i = 30; //int数据类型创建i 这里表示 斐波那契 第 i 位数字
int he = 0; // 后面+= 表示 1~第i位 的和
for(int j=i; j >=1 ; --j){ //for循环 初始值为i i的值可以自己随意设置
he += m1(j); //让第j次的数 和he相加 循环到下一次 就是j-1的数相加
}
System.out.println( "斐波那契 1~"+i+"位数 的和为: " +he ); // 输出
}
public static int m1(int n){ //创建一个方法
if (n == 1) { //n==1的时候 返回值为0 否则就执行一下语句
return 0; //返回到m1
}
if (n == 2) { // n==2的时候 ,返回值为1 否则就执行一下语句
return 1; //返回到m1
}else{ //否则就执行一下语句
return m1(n-1) + m1(n-2); //这是第n位的那个数值 也就是咱们设置的第 i 位的数值
}
}
}
用for循环和递归调用写出1~N的斐波那契数列的和 和第N位的数
标签:
原文地址:http://www.cnblogs.com/xrmqbl/p/4700557.html