求第七题解答方法,c++ 问题是程序输出的第一,二,三行分别是?

2024-12-02 01:54:42
推荐回答(3个)
回答1:

这题考察两点:1是全局变量和局部变量,2是递归调用
主函数第一个f(6)调用过程:
第一层递归调用时,传进来的a=6,所以 全局::a=0+6=6,局部a先递减为5,
经过if判断进了else 然后就调用f(a-1) ;
第二层递归调用时,传进来的a=4, 全局::a=6+4=10,局部a先递减为3,
经过if判断进了else 然后就调用f(a-1) ;
第三层递归调用时,传进来的a=2, 全局::a=10+2=12,局部a先递减为1,
经过if判断满足条件,输出全局::a即12;
然后返回第二层递归执行 ::a+=a;此时第二层的a=3,所以:a=12+3=15,
输出全局::a即15;
然后返回第一层递归执行 ::a+=a;此时第二层的a=5,所以:a=15+5=20,
输出全局::a即20;
所以第一个f(6)调用输出了3次::a,分别为12,15,20
类似可推出f(4)调用输出了2次::a 分别为26,29
故此程序输出结果为:
第一行 12
第二行 15
第三行 20
第四行 26
第五行 29

朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。

回答2:

输出的五行依次是
12
15
20
26
29

回答3:

有难度。。