码农小白 算法篇[递归] 递归基础

本文介绍了递归的基础知识,包括递归的概念、用递归计算阶乘、打印指定范围数字、数组求和及翻转字符串等实例。通过递归将复杂问题分解为简单子问题,逐一解决,适合码农小白学习掌握。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递归基础

1、递归概念

递归是一种方法(函数)调用自己的编程技术

void f(int n){
	if(n == 0)    //设置出口
		return;
	f(n - 1);    //调用自己
}

2、用递归求阶乘

/*
* 求n的阶乘
* 找重复:n的阶乘 = n * [(n - 1)的阶乘],(n - 1)的阶乘 = (n - 1) * [(n - 2)的阶乘]……
* 找变化:变化的量应该做为参数
* 找边界:出口
*/

public class Myclass {
	public static int f1(int n){
		if(n == 1)
			return 1;
		return n * f1(n - 1);
	}
	
	public static void main(String[] args) {
		System.out.println(f1(5));
	}
}

输出结果

120

3、打印 i ~ j

/*
* 找重复:
* 找变化:变化的量应该做为参数
* 找边界:出口
*/

public class Myclass {
	public static void f2(int i, int j){
		if(i > j)
			return;
		System.out.println(i);
		f2(i + 1, j);
	}
	
	public static void main(String[] args) {
		f2(1, 5);
	}
}

输出结果

1
2
3
4
5

4、数组求和

/*
* 数组求和
* 找重复:
* 找变化:变化的量应该做为参数
* 找边界:出口
*/

public class Myclass {
	public static int f3(int[] arr, int index) {
		if (index == arr.length - 1)
			return arr[index];
		return arr[index] + f3(arr, index + 1);
	}
	
	public static void main(String[] args) {
		int tmp = f3(new int[] { 1, 2, 3, 4, 5 }, 0)
		System.out.println(tmp);
	}
}

输出结果

15

5、翻转字符串

/*
* 翻转字符串
* 找重复:
* 找变化:变化的量应该做为参数
* 找边界:出口
*/

public class Myclass {
	public static String f4(String str, int index){
		if(index == 0)
			return str.charAt(0) + "";
		return str.charAt(index) + f4(str, index - 1);
	}
	
	public static void main(String[] args) {
		System.out.println(f4("abcdef",5));
	}
}

输出结果

fedcba

本篇总结

此篇都是用基础切蛋糕思维实现递归,把一个问题切分为多个小问题,然后逐级击破

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值