首页 文章资讯内容详情

通过在 C++ 中执行给定的操作将数字减少到 1

2026-06-02 1 花语

给定一个整数Number作为输入。目标是找到将输入Number减少到1所需的最少步骤或操作数。可以执行的操作将是-:

如果Number是偶数,则将其除以2。

如果Number为奇数,则将其增加或减少1。

例子

输入 -数字=28

输出 -将28减少到1的最小步骤:6

说明-

28是偶数-除以2=14

14是偶数-除以2=7

7是奇数-增加1=8

8是偶数-除以2=4

4是偶数-除以2=2

2是偶数-除以2=1

输入 -数字=9

输出 -将9减少到1的最小步骤:4

说明-

9是奇数-减1=8

8是偶数-除以2=4

4是偶数-除以2=2

2是偶数-除以2=1

下面程序中使用的方法如下

在这种方法中,使用递归方法来检查将Number减少到1所需的最小操作。如果它甚至简单地除以2,则递归检查Number+1或Number-1的最小方法,以较小者为准。

将输入Number作为整数。

函数minWays(intnum)将num作为输入并返回将num减少到1所需的最少操作数。

将变量tmp1、tmp2和min作为整数。

如果num为0,则返回1。

如果num%2==0那么它是偶数然后设置num=num/2

如果num为奇数,则设置tmp1=minWays(num-1)和tmp2=minWays(num+1)。

设置min是tmp1和tmp2的最小值。

返回1+分钟。

最后我们会得到想要的结果。

在main中打印结果。

示例

#include <iostream> using namespace std; int minWays(int num){ int tmp1,tmp2,min; if (num == 1){ return 0; } else if (num % 2 == 0){ tmp1=minWays(num/2); return (1 + tmp1); } else{ int tmp1=minWays(num - 1); int tmp2=minWays(num + 1); int min=tmp1<tmp2?tmp1:tmp2; return (1 + min); } } int main(){ int Number = 21; cout <<"减少的最小步骤 "<<Number<<" to 1: "<<minWays(Number); return 0; }输出结果

如果我们运行上面的代码,它将生成以下输出

减少的最小步骤 21 to 1: 6