0%

c-for循环里面递归的探究

代码样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
static int count = 0;
void recur(int i, int n)
{
count++;
printf("B>");
for(i; i <= n; i++)
{
printf("I>");
recur(i + 1, n);
printf("R>");
}
}
int main()
{
int n=1;
recur(0, n);
printf(" COUNT= %d\n", count);
return 0;
}

说明

n次的for循环执行的次数是n,n次的递归调用次数亦是n,两者合在一起理想的状态应该 n2次,但因为递归的特性,却大大增加了复杂度。
1.n=1时程序的输出是: B>I>B>I>B>R>R>I>B>R> COUNT=4
2.即recur调用了4次,和我们预期的结果n2是相同的
3.n=2时,程序输出是:B>I>B>I>B>I>B>R>R>I>B>R>R>I>B>I>B>R>R>I>B>R> COUNT=8
4.这时候,recur调用次数是n2,接着我们再用不同的n测试,也验证了n2的正确性

原文链接:https://blog.csdn.net/mikayong/article/details/51706508