当前位置:首页题目 > 正文

考虑如下递归算法,则调用solve(7)得到的返回结果为( )。

作者:野牛程序员:2023-05-27 14:36:46题目阅读 3122

考虑如下递归算法:

    solve(n)
    if n<=1 return 1
    else if n>=5 return n*solve(n-2)
        else return n*solve(n-1)


则调用solve(7)得到的返回结果为(        )。 A.105 B.840 C.210 D.420

解答分析:

我们可以通过手动执行递归算法来找出调用 solve(7) 的返回结果。下面是该过程的迭代步骤:

  1. 调用 solve(7)

    • 由于 7 >= 5,我们执行 return n * solve(n-2)

    • 这将变为 7 * solve(5)

  2. 调用 solve(5)

    • 由于 5 >= 5,我们执行 return n * solve(n-2)

    • 这将变为 5 * solve(3)

  3. 调用 solve(3)

    • 由于 3 < 5,我们执行 return n * solve(n-1)

    • 这将变为 3 * solve(2)

  4. 调用 solve(2)

    • 由于 2 < 5,我们执行 return n * solve(n-1)

    • 这将变为 2 * solve(1)

  5. 调用 solve(1)

    • n <= 1,所以我们返回 1

回到步骤 4,我们得到 2 * 1 = 2,然后回到步骤 3,我们得到 3 * 2 = 6,再回到步骤 2,我们得到 5 * 6 = 30,最后回到步骤 1,我们得到 7 * 30 = 210

因此,调用 solve(7) 的返回结果为 210。所以答案是选项 C.210。



野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击