用java编写一个故事的程序_使用Java怎么编写一个递归程序

使用Java怎么编写一个递归程序

发布时间:2021-02-20 16:05:44

来源:亿速云

阅读:52

作者:Leah

这篇文章将为大家详细讲解有关使用Java怎么编写一个递归程序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

递归的定义

递归(recursion):以此类推是递归的基本思想,将规模大的问题转化为规模小的问题来解决。

递归的要素

自定义递归函数,并确定函数的基本功能

例如Java从键盘输入一个数,求输入这个数的阶乘。这个时候把输入的数字作为形参int diGuiTest(int n ){

}

找到递归函数循环结束条件

在求阶乘的时候,我们不妨做出如下思考,例如输入的n是5,那么5!是5 * 4 3 * 2 * 1,那是不是可以写成

n f(n-1)?,程序运行过程如下:

5* f(4)

f(4)相当于重新调用了函数,形参为4

5 * 4* f(n-1)

f(3)相当于重新调用了函数,形参为3

5 * 4* 3* f(n-1)

f(2)相当于重新调用了函数,形参为2

5 * 4* 3 * 2* f(n-1)

f(1)相当于重新调用了函数,形参为1

很容易发现,这时候如果递归调用到n为1的时候,就要结束调用自身

代码如下:int diGuiTest(int n ){

if(n==1){

return 1;

}

else{

return n*f(n-1);

}

}

代码示例

求1–100之间所有自然数的和int sum (int n ){

if(n==1){

return 1 ;

}

else{

return n+sum(n-1);

}

}

斐波拉契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、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*)int fibonacci(int n ){

if (n<=1){

return n;

}

else {

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

}

}

汉诺塔问题

6199659c1a41d6ee2284cdfb2378ce7b.png

首先我们考虑最简单的情况:

c0f2522e9322ce18620ce914a0c1b067.png

将最上面的一块放到B,再将最下面一块放到C,再把最上面一块从B放到C即可

3e3a9d5f7e6eb40635ecaab72d6bc84f.pngpublic class Hanio {

public static void main(String[] args) {

char A='A';

char B='B';

char C='C';

hannio(3,A,B,C);

}

static  void hannio(int paltfrom,char A,char B, char C){

if (paltfrom==1){

move (A,C);

}else {

hannio(paltfrom-1,A,C,B);//上面两个盘子,通过C柱到B柱

move (A,C);

hannio(paltfrom-1,B,A,C);//

}

}

static  void move(char A,char B){

System.out.println(A+"---->"+B);

}

}

关于使用Java怎么编写一个递归程序就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值