递归-循环里面放一个递归函数

如下是一个常见的递归函数,在循环中调用自身 , 那么如何理解这种代码呢?
其实就是把递归语句看成是一个普通的可执行语句,看成调用另外一个函数的语句就可以了

#include<stdio.h>
void f(int a)
{
	int i;
	printf("%d   " , a);
	for( i = 0 ; i < a ; i++ )
		f(a - 1);
}
int main()
{
	f(3);
	return 0;
}
void f(int 3)
{
	printf("%d " ,3)
	for(i = 0 ; i < 3 ; i++)
	f(2);    文字和图片(图片在下面)描述一起看更好
	         代入a = 3 , 到循环中, 发现其实就是先输出3 , 再做3f(2),做第一次f(2)的时候(i = 0)
			 再代入一次 a = 2f(2)又做了两次f(1) , 是先输出2再做f(1) ,做f(1)的时候再输出1,
			 再做f(0),输出0,f(0)的起始条件i=0,一开始就是0<0的循环条件,不符合,就说明做完了,
			 f(0)做完,然后说明f(1)f(0)语句做了一次,但是f(1)中只能做一次,然后说明f(1)语句也
			 做完了,f(1)语句在f(2)里面,然后f(2)要做2f(1),所以要做第二次f(1),然后f(1)又执行一次
			 f(0)语句,然后我们做完第二次f(1)语句,说明f(2)的循环已经做了2次了,已经做完了,f(2)执行
			 完了自己的语句,就说明f(3)第一次调用f(2)的语句已经执行完了,接下来执行第二次f(2)语句
			 接下来的情况和上述分析完全一样,其实就是不断的套语句,
}          
		    

在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿维的博客日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值