java基本算法总结

来源:互联网 发布:开淘宝店好还是天猫好 编辑:程序博客网 时间:2024/05/19 21:00

递归定义:递归函数及自调用函数,在函数体内直接或间接的调用自己,即函数的嵌套是函数本身。

递归方式:递归调用分为直接递归和间接递归。

1.直接递归:在函数中出现调用函数本身。
示例:下面代码求斐波那契数列第n项,斐波那契数列第一和第二项是1,后面每一项是前两项之和,即1、1、2、3、5、8、13 ...。
程序代码:
public class RecursionTest {
public static void main(String[] args) {
int x1 = 1;
int sum = 0;
int n = 7;
for (int i = 1; i <= n; i++) {
x1 = func(i);
sum = sum + x1;
}
System.out.println("sum=" + sum);
}
public static int func(int x) {
if (x > 2)
return (func(x - 1) + func(x - 2));
else
return 1;
}
}
2.间接递归:指函数中调用了其他函数,而该其他函数有调用了本函数。
示例:用间接递归来计算上述斐波那契数列。
程序代码:
public class RecursionTestB {
public static void main(String[] args) {
int x1 = 1;
int sum = 0;
int n = 7;
for (int i = 1; i <= n; i++) {
x1 = func1(i);
sum += x1;
}
System.out.println("sum:" + sum);
}
public static int func1(int a) {
int b;
b = func2(a);
return b;
}
public static int func2(int b) {
if (b > 2)
return (func1(b - 1) + func1(b - 2));
else
return 1;
}
}
从上面例子我们可以发现虽然非递归函数效率高,但较难编程,可读性较差。递归函数的缺点是增加了系统开销,也就是说,每递归一次,栈内存就多占用一截。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq好友申诉后怎么办 无好友辅助申请怎么办 辅助申诉成功后怎么办 qq绑不了手机号怎么办 新办号码有微信怎么办 两手机互换号后微信怎么办 手机申请不了qq怎么办 快手账号保护了怎么办 qq号过期登不上怎么办 xp 登陆界面不见了怎么办 手机号qq 别人登录怎么办 qq号申请频繁怎么办 qq号实名验证怎么办 陌陌没法注册怎么办 腾讯q币充值错误怎么办 手机号码注册微信号怎么办 q币充错了号怎么办 微信超额度提现都不可以怎么办 微信发红包转账限额怎么办 银行卡没设密码怎么办 宜人贷逾期一天怎么办 快手实名已认证怎么办 爱奇艺充会员没有银行卡怎么办 手机qq内存太大怎么办 借呗逾期半年怎么办 支付宝支付错误怎么办 小米6支付宝闪退怎么办 验证码发送失败怎么办 支付宝升级后打不开怎么办 steam支付宝失败怎么办 支付宝无响应怎么办 花呗加载失败怎么办 吃鸡平台无效怎么办 悦支付登录不了怎么办 微信里的钱超额怎么办 qq不能发红包怎么办 qq红包多发了怎么办 qq红包领不了怎么办 qq红包密码忘记怎么办 钱包锁密码忘记怎么办 支付宝红包过期怎么办