java中的递归怎么写
1.java中的递归方法是怎么样的
public int sum(int number){
if(number == 1){
return 1;
}else{
return number+ sum(number-1);
}
}
---------------------------------------
这个就是最简单的递归调用求和:以此类推既可以。
例如:
sum(4);
4 + sum(3);
-----3 + sum(2)
----------2 + sum(1);
---------------1;
2.用JAVA程序写一个最简单的递归算法
比如阶乘运算,就是一个很简单的递归类的代码如下:----------------------------------------------------import java.math.BigInteger;//由于结果比较大,引入了大整数BigInteger类public class Plus {//该类计算1000!并输出public static void main(String[] args) {int n = 1000;System.out.println(getPlus(n).toString());//调用getPlus方法,获取n!,并将结果转化为字符串输出}static BigInteger getPlus(int n) {//该方法获取n的阶乘if(n==0) return new BigInteger("1");//如果n是0,那么返回0!=1……(*)return getPlus(n - 1).multiply(new BigInteger(String.valueOf(n)));//如果n非0,那么返回(n-1)!*n……(**)}}---------------------------------------------------------关键的步骤在于(*)和(**)要运用递归,就必须满足1.原问题可以层层转化为规模越来越小的子问题即(**),把n!转化为求(n-1)!,再转为求(n-2)!……2.对于规模足够小的问题,能够直接得解即(*),对于0!,能够直接得到结果1。
3.java的递归查询怎么写
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,在MySQL的目前版本中还没有对应的功能。
在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。
但很多时候我们无法控制树的深度。
这时就需要在MySQL中用存储过程来实现或在你的程序中来实现这个递归。
4.用JAVA程序写一个最简单的递归算法
比如阶乘运算,就是一个很简单的递归
类的代码如下:
----------------------------------------------------
import java.math.BigInteger;
//由于结果比较大,引入了大整数BigInteger类
public class Plus {
//该类计算1000!并输出
public static void main(String[] args) {
int n = 1000;
System.out.println(getPlus(n).toString());
//调用getPlus方法,获取n!,并将结果转化为字符串输出
}
static BigInteger getPlus(int n) {
//该方法获取n的阶乘
if(n==0) return new BigInteger("1");
//如果n是0,那么返回0!=1……(*)
return getPlus(n - 1).multiply(new BigInteger(String.valueOf(n)));
//如果n非0,那么返回(n-1)!*n……(**)
}
}
---------------------------------------------------------
关键的步骤在于(*)和(**)
要运用递归,就必须满足
1.原问题可以层层转化为规模越来越小的子问题
即(**),把n!转化为求(n-1)!,再转为求(n-2)!……
2.对于规模足够小的问题,能够直接得解
即(*),对于0!,能够直接得到结果1
5.Java中的递归如何使用
程序调用自身的编程技巧称为递归( recursion)。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。 注意: (1) 递归就是在过程或函数里调用自身; (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
上面是递归的定义,我现在给你一个JAVA最简单的递归的我写的例子,你可以对照着看:
public class Test { public static void main(String[] args) { output(1); } private static void output(int n) { // TODO Auto-generated method stub System.out.println(n); if(n
递归的怎么写
1. 如何写递归函数
递归函数,是指某一函数内部自己直接或间接地调用自己,即直接递归和间接递归。是语言中比较高级的技术用法。
递归函数之所以难,是因为是一种过于抽象化的技术
写代码的时候无法直观的看出逻辑是否符合自己要求,因此想一次性写好递归函数,是一件很困难的事情,必须要程序运作起来执行递归函数的代码才能看出是否正确,而且进行测试的难度也很高,有时的隐含bug可能要软件上线后才会渐渐体现出来。
首先,
要分析清楚满足递归的条件,并一一列出。
其次,
要分析不满足条件时的处理方式。
在列出了所有条件后,我们自然还要考虑不满足条件后的结果,一种是业务本身要求的不满足条件后的处理,另一种就是出现错误时候的处理。说的简单点,就是正确的情景考虑到了后还要考虑错误的情景。
接下来,
要分析递归函数的返回值。
最后,
写完递归函数后一定要进行单元测试,测试也要有方法。
因此难以保障一次写完后正确性,所以写完后一定要测试,递归函数本身测试也很麻烦,递归次数少倒还好,递归次数一旦多的话就很头疼。这时我们可以将循环的次数,以及递归的后的结果打印出来,看看打印后的结果是否符合自己的预期,如果某一递归出现问题,可以根据循环次数的记录在调试的时候直接定位,这样效率会高很多,也容易很多,要不然一步步调试看,实在是折磨人。测试的时候一定要涉及到所有满足递归的条件,每一条件分支都要检查一遍,这样才是较为全面的测试递归的方法。
写递归函数,不是一下两下能搞定的事情,本身就是一个反复性工作,编写→测试→编写→测试→。,所以在分析、编写的时候一定要静心、细心,不要急躁,这样渐渐的递归函数也就健全起来。头几次写递归函数可能写不好,日后多多练习便会慢慢深刻体会到递归的精髓。
那么我想说的也说完了,希望这篇文章能对大家有帮助。
2. 递归程序如何写,要满足三个条件,切记
以 C 语言为例,举一个最最经典的例子就是:计算一个整数的阶乘。
#include
int my_jiecheng( int ) ; /* 计算阶乘子函数原型说明 */
int main( )
{
int num, result = 0 ;
scanf("%d", &num) ; /* 从键盘输入一个整数 num */
result = my_jiecheng(num) ; /* 调用计算阶乘子函数 my_jeicheng( ),并将最终的结果保存在 result 变量中 */
printf("result = %d\n", result ) ; /* 输出最后的计算结果 */
return 0 ;
}
int my_jiecheng( n )
{
if( n == 1 ) /* 定义: 1!== 1,即:1 的阶乘等于 1 */
return (1) ; /* n == 1,返回 1 */
else /* 递归调用 my_jiecheng( ) 子函数 */
return( n * my_jiecheng(n-1) ) ; /* 否则的话,n != 1,递归调用 n*(n-1) ! */
}
3. 用c语言的递归怎么来写选择排序
选择排序的递归算法
#include
select(int a[8],int m,int n)
{
int i,t,k;
k=m;
for(i=m+1;iif(a[k]>a[i])
k=i;
if(k!=m)
{
t=a[k];
a[k]=a[m];
a[m]=t;
}
if(mselect(a,m+1,n);
}
main()
{
int a[10]={46,55,13,42,94,17,05,70};
int i;
select(a,0,8);
for(i=0;iprintf("%4d",a[i]);
printf("\n");
}
转载请注明出处育才学习网 » 递归表达式怎么写
育才学习网