java实现斐波那契数列和约瑟夫环

斐波那契数列的递归实现:

public int fn(int n) {

if (n == 1 || n == 2)

return 1;

return fn(n-1)+fn(n-2);

}

非递归写法:

public int fn(int n) {

int a =1;

int b = 1;

int tmp;

if (n == 1 || n == 2)

return 1;

for (int i = 2; i < n; i++) {

tmp = a +b;

a = b;

b = tmp;

}

return b;

}

约瑟夫环找到一种简单的方法:

public class JosephRing {

public JosephRing(){};

public void cac(int m, int n) {

List<Integer> ls = new ArrayList<Integer>();

for (int i = 1; i <= n; i++)

ls.add(i);

int count = 0;

for (int i = 1; i <= n; i++) {

count = (--count + m) % ls.size();

System.out.print(ls.remove(count) + "  ");

}

}

public static void main(String[] args) {

new JosephRing().cac(7, 5);

}

}

时间: 2024-10-29 11:31:25

java实现斐波那契数列和约瑟夫环的相关文章

【Java】斐波那契数列(Fibonacci Sequence、兔子数列)的3种计算方法(递归实现、递归值缓存实现、循环实现)

斐波那契数列:0.1.1.2.3.5.8.13………… 他的规律是,第一项是0,第二项是1,第三项开始(含第三项)等于前两项之和. > 递归实现 看到这个规则,第一个想起当然是递归算法去实现了,于是写了以下一段: public class RecursionForFibonacciSequence { public static void main(String[] args) { System.out.println(recursion(10)); } public static double

java输出斐波那契数列

题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*) //Java编程:三种

Java实现斐波那契数列Fibonacci

import java.util.Scanner; public class Fibonacci { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); System.out.println("斐波那契数列的个数是:"); int total=in.nextInt(); System.out.println("

JAVA实现--斐波那契数列

斐波那契数列是我在初中的数学课接触到的,当时唯一对这个感兴趣的是他的名字,因为一直在想是谁起了一个这么别扭的名字-后来无知的我才发现原来是这么一回事: 斐波那契数列:是1202年莱昂纳多·斐波那契提出的,当时只是为了解决一个兔子繁殖的问题,后来再世人的研究与拓展,发现他有非常广泛的应用.下面我们用程序来实现如何计算斐波那契数列: 0,1,1,2,3,5,8,13,21,34-- 上面这个数列有一个递推式和一个初始条件: F[n]=F[n-1]+F[n-2] (n>1) F[0]=0, F[1]=

斐波那契数列【java实现】

java 实现斐波那契数列 以下是Java代码实现(递归与递推两种方式): import java.util.Scanner; /** * Fibonacci * * @author tongqian.zhang */ public class Fibonacci { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Please input

用程序猿思维、程序设计师思维两种方式写求斐波那契数列的方法。

//用Java实现斐波那契数列(Fibonacci) public class Test { public int f(int n)//n代表第几个数字.程序返回它相应的值 { return n>2?f(n-1)+f(n-2):1;//看似如此优雅的一句程序 } //程序设计师的思维:会重构上面的代码.让他们更易读.推荐!! ! public int fibo(final int pos) { final int num; if(pos>2) num = fibo(pos-1)+fibo(po

用程序员思维、程序设计师思维两种方式写求斐波那契数列的方法。

//用Java实现斐波那契数列(Fibonacci) public class Test { public int f(int n)//n代表第几个数字,程序返回它对应的值 { return n>2?f(n-1)+f(n-2):1;//看似如此优雅的一句程序 } //程序设计师的思维:会重构上面的代码,让他们更易读,推荐!!! public int fibo(final int pos) { final int num; if(pos>2) num = fibo(pos-1)+fibo(pos

Java 兔子问题(斐波那契数列)扩展篇

Java兔子问题(斐波那契数列)扩展篇 斐波那契数列指的是这样一个数列 0, 1, 1, 2,3, 5, 8, 13, 21, 34, 55, 89, 144, ...对于这个数列仅仅能说将兔子生产周期第为3月.假设生成周期变成4月这个数列肯定不是这种,或者说兔子还有死亡周期,在这里我是对兔子生产周期没有限定.仅仅要月份大于生产周期都能够计算出第month月份究竟能产生多少对兔子. Java兔子生殖问题 斐波那契数列又因数学家列昂纳多·斐波那契以兔子生殖为样例而引入.故又称为"兔子数列"

PHP_I love U之(2)php衣食父母: Java与PHP效率比拼之一:斐波那契数列

PHP_I love U之(1)php衣食父母: Java与PHP效率比拼之一: 斐波那契数列 Fibonacci 解释见:http://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97 ( 应该是1 , 维基的公式错了!?!) (n≧2) 这次先写 Java的代码: class fb { static int f1b (int x) { if ((0==x)||(1==x) ) {  ret