黑马程序员技术交流社区
标题:
帮我看看程序哪里写错了,求解答
[打印本页]
作者:
官珺伟
时间:
2013-12-31 05:54
标题:
帮我看看程序哪里写错了,求解答
本帖最后由 官珺伟 于 2013-12-31 10:52 编辑
class Test3
/*求斐波那契数列第n项,n<30
斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
1 1
2 3
5 8
13 21
34 55
*/
{
public static void main(String[] args)
{
int sum (29);
System.out.println("斐波那契数列前n项是"+sum);
}
public int f(int n)
{
if(n == 1 || n == 2)
return 1;
else
return f(n-1) + f(n-2);
}
}
复制代码
作者:
浮出一个美
时间:
2013-12-31 07:18
给你个参考吧,还不完善,能实现功能
package com.itheima;
import java.util.Scanner;
/**
* 第三题:
* 求斐波那契数列第n项,n<30
* 斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
*/
public class Test3 {
public static void main(String[] args) {
System.out.print("请输入一个大于1小于30的整数:");
Scanner sc = new Scanner(System.in);
int inputNumber = sc.nextInt();
while(inputNumber<1 || inputNumber>30){
System.out.print("您的输入不合法,请输入一个大于1小于30的整数:");
inputNumber = sc.nextInt();
}
int resultNumber = getFibonacci(inputNumber);
System.out.println("斐波那契数列第"+inputNumber+"项的值是:"+resultNumber);
}
/**
* 利用递归的思想得出斐波那契数列第n项
*/
public static int getFibonacci(int n){
int result = 0;
if(n ==1 || n ==2){
result = 1;
}else{
result = getFibonacci(n-1) + getFibonacci(n-2);
}
return result;
}
}
复制代码
作者:
75100313
时间:
2013-12-31 08:41
本帖最后由 75100313 于 2013-12-31 08:43 编辑
package com.mth.test;
public class Test1 {
public static int f(int n) {
if (n == 1 || n == 2)
return 1;
else
return f(n - 1) + f(n - 2);
}
public static void main(String[] args) {
int total = 0;
int n = 3;//想要计算 的项数
for (int i = 1; i <= n; i++) {
total += f(i); //总和
}
System.out.println("斐波那契数列前"+n+"项和是" + total);
}
}
复制代码
作者:
jibenwujie
时间:
2013-12-31 08:53
public class Test2 {
/**
* @param args
*/
public int feiBo(int n) {
if (n>=30 || n<=0) { //n不在范围之内,不予执行
System.exit(0);
}
if (n == 1 || n == 2) {
return 1;
}else{
return feiBo(n-1)+feiBo(n-2);//递归
}
}
public static void main(String[] args) {
System.out.println(new Test2().feiBo(29));
}
}
复制代码
作者:
程玉习
时间:
2013-12-31 10:18
我是这样想的。。。仅供参考
public class Test {
public static void main(String[] args) {
//分析:规律是第三项等于前两项的和,
//先定义出前两项均为1,因为从第三项开始循环,所以前两项直接打印
int x = 1, y = 1, z;
System.out.println("斐波那契数列第1项是:1");
System.out.println("斐波那契数列第2项是:1");
for(int j=3;j<30;j++){
//第三项为它前两项的和
z = x + y;
//第三项运算完以后,右移一向赋值
x = y;
y = z;
System.out.println("斐波那契数列第"+j+"项是:"+z);
}
}
}
复制代码
作者:
程玉习
时间:
2013-12-31 10:31
这次解答。。。
1, int sum (29);//因为调用方法有int类型的返回值,所以要用int 类型变量接收
应该为int sum = f(29);
2, public int f(int n)//因为主函数要调用所以必须定义成静态的
应该为public static int f(int n)
改完以后再试试就oK了
class Test3
/*求斐波那契数列第n项,n<30
斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
1 1
2 3
5 8
13 21
34 55
*/
{
public static void main(String[] args)
{
int sum = f(29);
System.out.println("斐波那契数列前n项是"+sum);
}
public static int f(int n)
{
if(n == 1 || n == 2)
return 1;
else
return f(n-1) + f(n-2);
}
}
复制代码
作者:
@翱翔@
时间:
2013-12-31 12:54
本帖最后由 @翱翔@ 于 2013-12-31 13:05 编辑
class Test3 /*求斐波那契数列第n项,n<30 斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55 1 1 2 3 5 8 13 21 34 55 */ {
public static void main(String[] arg) {
int sum (29); //你的方法你定义的方法不一致,应该是 f(29)
System.out.println("斐波那契数列前n项是"+sum); }
public int f(int n) {
if(n == 1 || n == 2)
return 1;
else
{
return f(n-1) + f(n-2);
}
}
}
作者:
lipanquan
时间:
2014-1-3 19:27
class Test3
/*求斐波那契数列第n项,n<30
斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
1 1
2 3
5 8
13 21
34 55
*/
{
public static void main(String[] args)
{
int sum = f(29);
System.out.println("斐波那契数列前n项是"+sum);
}
public static int f(int n)
{
if(n == 1 || n == 2)
return 1;
else
return f(n-1) + f(n-2);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2