Java方法相互调用会出现死循环的拓展(if语句的方法完成循环结构)

今天初次学到Java方法的时候发现一个问题,就是写了一个方法,里面调用另外一个方法,但是如果该方法里面又调用了第一个方法会出现怎么样的问题呢?

	public static void method(int a) {
		a++;
		method1(a);
	}
	
	public static void method1(int a) {
		a++;
		method(a);
	}
	
	public static void main(String[] args) {
		method(0);	
	}

在这里我们定义两个方法,每个方法都是把参数自加1然后调用对方,很显然,当主方法调用其中任意一个方法的时候 ,就会造成方法的死循环当中去。
这时我萌生一个大胆的想法,既然能达成循环,加上特定的条件如循环起点,终点,步长不就可以构成一个循环吗,而且实践之后发现,最终可以达到用判断语句就可以达成循环的方法!
简单来说就是锤子造飞机!
下面是实现代码

//定义两个方法,让他们相互调用对方达成循环效果,加上步长和判断就可以变成循环语句
		public static void for1(int a,int times) {
			if(a<=times) {
				System.out.println(a);
				a++;
				x(a,times);
			}
		}
		
		public static void x(int a,int times) {
			if(a<=times) {
				for1(a,times);
			}
		}
		
		public static void main(String[] args) {
			for1(0,10);
		}

简单来说就是两个方法都判断一下达到循环终点没,如果到了循环终点就跳出互相调用的这个死循环

上面的方法for1的参数:

  1. 起点值
  2. 终点值
    从起点值开始每次循环加一,直到终点值为止

虽然完成了一个简单的循环结构,但也只是简单的循环而已,于是,带有循环起点,循环终点,步长参数的比较复杂的方法就完成了

//先调用这个
	public static void for1(int print,int times) {//参数为输出的数和次数,每次加一
		int b =0;
		if(b<times) {
			//循环体
			System.out.println(print);
			print++;
			b++;
			x(print,times,b);
		}
	}
	//重载for1方法,也就是后面的x方法调用的方法而不是上面那个for1,因为这个比上面的多一个参数
	public static void for1(int a,int b,int c) {//参数为输出,终点,起点,
		if(c<b) {
			//循环体
			System.out.println(a);
			a++;
			c++;
			x(a,b,c);
		}
	}
	//相互调用
	public static void x(int print,int b,int c) {//接收第二个for1方法改变之后的三个参数,完成判断之后传递回去
		if(c<b) {
			for1(print,b,c);
		}
	}
	
	public static void main(String[] args) {
		for1(10,10);
		System.out.println("-------------------------");
		for1(50,10,0);
	}

原谅英语学渣参数变量只能想到a,b,c到最后看的头昏,为了不让读者头昏,写了尽可能多的注释。。。。。
最后的输出结果为
在这里插入图片描述

因为注释写的足够多了,所以就不罗嗦了,主要说下两个for1的用法
我在main方法里面的第一个for1方法为以10(第一个参数)开头,输出并加一10(第二个参数)次,
第二个是以第一个参数(50),循环终点为第二个参数(10),循环起点为第三个(0),步长默认为1,可以自己添加参数为步长并且修改相关代码达到**for(输出,循环终点,循环起点,步长)**构成一个差不多的for循环!笔者就不赘述了。

总结

其实这个东西也是无意中才发现的,搜了下,网上还没有相关的文章,所以钻个空,顺便开通csdn一直没写过啥东西,刚好,诶!就是第一篇文章了(计划通)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值