十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
public
专注于为中小企业提供成都做网站、成都网站建设、成都外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业余杭免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
class
zuoye{
public
static
void
main(String[]
args){
int
num1=1,num2=1;//设定前两位数初始值
int
num=0;
//把变量mun赋值为0是什么意思?在后面有什么用?
答:
num赋值初始化为0,
不然为null.
System.out.println(num1+"\\t"+num2+"\\t"+(num1+num2));
//显示输出数列的前三位
这个上面的打印的结果和后面循环的结果应该是分开的,也就是前面打印
1
1
2
然后换行,然后再通过循环打印10个数字.
接下来我们看循环部分.
斐波那契数列公式是
F1=1
(n=1)
F2=1
(n=2)
Fn=F(n-1)+F(n-2)
(n=3)
所以,
for(int
i=1;i=10;i++){
//for循环
int
num3=num+num2;
//num+num2
??num加num2干什么?
答:num是个中间变量,
用来传值,
赋给num的值永远是F(n-1)
num2=num;
//为什么又把num赋值给num2?
答:
赋给num2的值永远是F(n-2).
这里因为num的值在上一个循环里为F(n-1),到下一个循环应该是F(n-2).所以赋给num2.
num=num3;
//
num3再赋给num?
答:
因为赋给num的值永远是F(n-1),
这里因为num3的值到下一个循环应该就是F(n-1).所以赋给num.
System.out.print("\\t"+num3);
if(i%5==0){
//i能被5整除.为什么要设定一个这样的判断条件?
答:
这里是每五个数打印一个换行符.
System.out.println();
//输出空的是什么意思?
答:
这里是打印一个换行符
}
}
}
}
public class Fibonacci {
public static void main(String args[]){
int n,fn;//n为第n项,fn为第n项的值
java.util.Scanner s = new Scanner(System.in);
n=s.nextInt();
fn=function(n);
System.out.println("斐波那契数列第"+n+"项为:"+fn);
}
public static int function(int n){
if(n==1 || n==2) return 1;
return function(n-1)+function(n-2);
}
}
希望能帮到你,其实和c语言是一样一样的。。
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n=2,n∈N*)。
以下是Java代码实现(递归与递推两种方式):
import java.util.Scanner;
public class Fibonacci {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please input this fibonacci n:");
int n = scanner.nextInt(); // 假设输入为大于零的整数
System.out.println(fibonacci(6) + ":" + fibonacciNormal(6));
int sum = 0;
for(int i = 1; i = n; i++){
sum += fibonacci(i);
}
System.out.println(sum);
}
// 递归实现方式
public static int fibonacci(int n){
if(n = 2){
return 1;
}else{
return fibonacci(n-1) + fibonacci(n-2);
}
}
// 递推实现方式
public static int fibonacciNormal(int n){
if(n = 2){
return 1;
}
int n1 = 1, n2 = 1, sn = 0;
for(int i = 0; i n - 2; i ++){
sn = n1 + n2;
n1 = n2;
n2 = sn;
}
return sn;
}
}
public static long fib1(int n){
if(n==1){
return 1;
}elseif(n==2){
return 2;
}else{
return fib1(n-1)+fib1(n-2);
}
}