计算机二级题,好难啊,有没有人帮帮我

就t=f(a,n-1)这句跟下面那句不会,看不懂啊,教教孩子吧(ฅ•﹏•ฅ)

img

img

f是递归函数。
t=f(a,n-1)是将f的第二个参数逐渐递减,这样才能逐渐满足else的条件来终止递归。
例如,
f(a,9),n=9,n>1成立,执行if语句,t=f(a,8);
f(a,8),n=8,n>1成立,执行if语句,t=f(a,7)
f(a,7),n=8,n>1成立,执行if语句,t=f(a,6)
f(a,8),n=8,n>1成立,执行if语句,t=f(a,5)
f(a,5),n=8,n>1成立,执行if语句,t=f(a,4)
f(a,4),n=8,n>1成立,执行if语句,t=f(a,3)
f(a,3),n=8,n>1成立,执行if语句,t=f(a,2)
f(a,2),n=8,n>1成立,执行if语句,t=f(a,1)
f(a,1),n=8,n>1不成立,执行else语句,返回a[0],也就是t=f(a,1)=a[0]
逐级带回
t=f(a,1)=a[0],此时n=2,执行return t>a[1]?t:a[1]
也就是判断t(此时t=a[0])是否大于a[1],并返回两者中的较大者,假设为x0(x0是a[0]、a[1]中的大数)
t=f(a,2)=x0,此时n=3,执行return t>a[2]?t:a[2]
也就是判断t(此时t=x0)是否大于a[2],并返回两者中的大者,假设为x1
依次类推,逐级往回带入

三目表达式
(a<b)?a:b
它是这样执行的:
如果a<b为真,则表达式取a值,否则取b值.

t=f(a,n-1),这个是每次调用f函数时n都减一处理,直到n<=1时,会进入else判断返回a[0],这个时候f函数是f(a,2),f(a,2)方法结束后回到原来f(a,3)的t=f(a,n-1)的地方执行下方的三元运算符,t>a[n-1]?n:a[n-1]是个三元运算符,当t>a[n-1]时,返回t,否则返回a[n-1]

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

就是递归调用f()函数,每次调用n都-1