Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 697|回复: 0

递归函数计算一例 java实例

[复制链接]

该用户从未签到

发表于 2011-9-18 15:31:51 | 显示全部楼层 |阅读模式
例(1):f(x) = f(x-1) + f(x-3), f(x) = 10 (x < 3)例(2):f(x) = ( f(x-1) + f(x-3) + x) / f(x-2), f(x) = 10 (x < 3)

    用一个长度为3的数组保存中间结果。move 方法主要用来移动中间结果数组里面的中间结果。
其实完全可以用一个 queue 队列来保存中间结果。直接把用过的 queue head 丢弃,把后面的结果加在队尾。

程序:
[pre]public class Fib{   public static void main(String args[]){     Fib f=new Fib();     for(int i=3;i<=10;i++)         System.out.println(f.fibonacci(i));   System.out.println("--------------");     for(int i=3;i<=30;i++)         System.out.println(f.f(i));   } public  int fibonacci(int x){   if(x< 3)     return 10;   int[] middleResults={10,10,10};   int result=0;  for(int i=1;i<=x-2;i++){   result=middleResults[0]+middleResults[2];   move(middleResults);   middleResults[2]=result; }  return result;} public double f(int x){        if(x < 3)          return 10.0;                    double[] middleResults ={10.0,10.0,10.0};        double result = 0;             for(int i = 1; i <= x-2; i++){         result = (middleResults[2] + middleResults[0] + x) / middleResults[1];         move(middleResults);         middleResults[2] = result;       }            return result;     }    public  void move(int[] array){ int k=array.length; int limit=k-1; for(int i=0;i< limit;i++){   array=array[i+1]; }}public  void move(double[]array){ int k=array.length; int limit=k-1; for(int i=0;i< limit;i++){   array=array[i+1]; }}}运行:[/pre]
C:\java>java Fib
20
30
40
60
90
130
190
280
--------------
2.3
1.64
6.7
8.316790736145574
2.485126930312088
2.058052812596989
7.299871825955862
8.881460828008004
2.965189324630314
2.506631991029014
7.762915612937961
9.219500907735743
3.409792287693365
2.951195116656821
8.124818953946315
9.435000886298152
3.83677362970048
3.393885906525632
8.415685316489553
9.580029076521782
4.25419933108847
3.835597071948546
8.654642316160107
9.681740827980857
4.6660206882746005
4.276746659493159
8.854480824055553
9.755429592436586
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-23 23:13 , Processed in 0.434245 second(s), 47 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表