You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中实现递归?求解Persistent Bugger乘法持久性问题

递归实现乘法持久性函数指导

核心递归逻辑

递归的关键在于明确终止条件和递归步骤:

  • 终止条件:当输入的数是个位数(n < 10)时,无需任何操作,返回0。
  • 递归步骤:计算当前数的各位数字乘积,然后递归调用函数处理这个乘积,同时将操作次数加1。

现有代码问题分析

你的代码仅完成了一次各位数字相乘的操作,没有对乘积结果继续执行相同逻辑,因此只能返回1,无法得到完整的乘法持久性次数。

完整递归实现代码

#include <iostream>
using namespace std;

int persistence(int n) {
    // 终止条件:个位数直接返回0
    if (n < 10) {
        return 0;
    }
    
    // 计算各位数字的乘积
    int product = 1;
    while (n > 0) {
        product *= n % 10;
        n /= 10;
    }
    
    // 递归调用:1次操作 + 乘积的持久性次数
    return 1 + persistence(product);
}

int main() {
    int number = 999;
    // 输出应为4:999→729→126→12→2,共4次操作
    cout << persistence(number) << endl;
    return 0;
}

代码解释

  1. 终止条件判断:直接检查n < 10,避免用vector存储各位数字,简化逻辑。
  2. 乘积计算:通过循环直接计算各位乘积,无需额外容器,提升效率。
  3. 递归调用:每完成一次乘积计算,操作次数加1,然后递归处理新的乘积,直到触发终止条件。

内容的提问来源于stack exchange,提问作者Ssekyanzi Aloysious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:47:45