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) ) {  return 1 ;}

int a;

a=f1b(x-1)+x;

System.out.println( a);

return a;

}

public static void main(String[] args) {

long startTime=System.nanoTime();   //star

long startTimeMs=System.currentTimeMillis();   //

//doSomeThing();  //Coding

f1b(999);

long endTime=System.nanoTime(); //end

System.out.println("Run Timming:"+(endTime-startTime)+"ns");

long endTimeMs=System.currentTimeMillis(); //获取结束时间

System.out.println("Runing Time: "+(endTimeMs-startTimeMs)+"ms");

}//main

}//class fb

PHP的代码:

<?php

function Fun1($x) //$x)

{

if (0==$x) { return 1;echo "\r\n";}

if (1==$x) { return 1;echo "\r\n";}

$b1= $x + Fun1( $x-1 ) ;

echo $b1;

echo "\r\n";

return $b1 ;

}

$x0=999;//100;

$t1 = microtime(true);

//要测试(时间)效率的代码;

Fun1($x0);

$t2 = microtime(true);

echo (($t2-$t1)*1000).‘ms‘;

结果:

Java:......

499500

Time: 104177238ns

MS time: 104ms

PHP:...

......

499500

Time(MS):  161.00978851318ms

结果:

JAVA  vs PHP

104ms  vs 161ms

1574ms  vs 909ms

当然是  Java胜出……

但考虑到 java的代码 要用 Javac 编译一遍……

而PHP的代码 直接 用php.exe 直接就运行了

所以 999 次(或9999次)斐波那契数列 计算之后 (都近似为)     1 : 1.6  的效率比 …… PHP还是能接受的吧

总之:PHP I 继续 love U(you)!

时间: 2024-11-10 00:52:45

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

【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 兔子问题(斐波那契数列)扩展篇

Java兔子问题(斐波那契数列)扩展篇 斐波那契数列指的是这样一个数列 0, 1, 1, 2,3, 5, 8, 13, 21, 34, 55, 89, 144, ...对于这个数列仅仅能说将兔子生产周期第为3月.假设生成周期变成4月这个数列肯定不是这种,或者说兔子还有死亡周期,在这里我是对兔子生产周期没有限定.仅仅要月份大于生产周期都能够计算出第month月份究竟能产生多少对兔子. 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基本算法面试题:1斐波纳契数列

开始学习JAVA,基础知识恶补! 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*). 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 以下是Java代码实现(递归与递推两种方式): import java.util.Scanner;

java程序员到底该不该了解一点算法(一个简单的递归计算斐波那契数列的案例说明算法对程序的重要性)

为什么说 “算法是程序的灵魂这句话一点也不为过”,请看下面这个简单的案例 1 package recursion; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 import org.junit.Test; 7 8 /** 9 * @author: MengXianman 10 * @creationTime: 2017年11月27日 上午9:47:51 11 * @description: 斐波那契数列结合备忘录算法的简单使

几种复杂度的斐波那契数列的Java实现

一:斐波那契数列问题的起源 13世纪初期,意大利数论家Leonardo Fibonacci在他的著作Liber Abaci中提出了兔子的繁殖问题: 如果一开始有一对刚出生的兔子,兔子的长大需要一个月,长大后的兔子每个月能生产一对兔子,假设兔子不会死亡,那么一年后有多少只兔子? 不难看出每个月的兔子的总数可以用以下数列表示:1,1,2,3,5,8,13...... 二:最直观的算法 1.算法实现 通过观察我们不难发现斐波那契数列从第三项开始每一项都是前两项的和,因此我们不难总结出该数列的递推公式:

简述java递归与非递归算法,0-100求和,斐波那契数列,八皇后,汉诺塔问题

一:什么是递归算法? 递归算法就是直接或者间接的调用自己的方法,在达到一个条件的时候停止调用(递归出口),所以一定要找准好条件,让递归停止,否则就会是无限进行下去 二:递归程序设计的关键 1:找出调用中所需要的参数 2:返回的结果 3:递归调用结束的条件 三:递归程序注意 1:要有方法中自己调用自己 2:要有分支结构 3:要有结束的条件 四:简单叙述递归函数的优缺点 优点: 1:简洁清晰,实现容易,可读性好 2:在遍历的算法中,递归比循环更为简单 缺点: 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