×

递归

如何理解递归?C语言函数递归的理解

admin admin 发表于2022-05-27 03:02:45 浏览144 评论0

抢沙发发表评论

如何理解递归


递归,又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。

C语言函数递归的理解


int main(int argc, char *argv)
main参数 argc 是保存命令的个数,argv 保存命令

例如 test -a -b -c
test程序启动时接受了 4个参数(默认 test也属于一个参数 ),个数保存到argc -a -b -c 保存到argv

递归。我觉得你被这个名气搞晕了而已,其实就很简单,在某个函数中再调用这个函数,就叫递归
例如
int test(int a)
{
return test(a+1); //死循环 ,不断进入test函数 a不断加1。。。。
} //你可以理解为一个for 或者while的另一种形式,反正就是循环,加判断以停止递归调用

java递归方法,求助!


一般递归只实现一个方向的逻辑,把两个方向的逻辑放到一方法里并不好,不容易控制,实现也很麻烦,考虑到维护时的难度请不要在实际项目中使用。
搞了好一会,搞出个这样的输出2N-1行星号,中间最长的一行不重复,如果楼主希望重复中间一行,可以对代码做一点点改动。
/**
* 入口,传入N
*/
public static void printStar(int number){
printStar2(number, number, 1);
}

/**
*
* @param number 给定的N
* @param oldNumber 给定的N
* @param direction 递归时的方向
*/
public static void printStar2(int number,int oldNumber, int direction){
if(number==0)direction++;
String s=““;
int i = number;
if(direction==1){
for(;i《oldNumber;i++){
s+=“*“;
}
number--;
}else{
for(;i《oldNumber;i++){
s+=“*“;
}
number++;
if(number》oldNumber){
return;
}
}

printStar2(number,oldNumber,direction);
System.out.println(s);
}
-递归