找出 1 到 n 之间仅包含数字 0 和 1 的整数数目(C++)


假设我们有一个数字 n。我们的任务是找出 1 到 n 之间仅包含数字 0 和 1 的整数数目。因此,如果 n = 15,则输出将为 3。因为数字是 1、10、11

为了解决此问题,我们将使用递归函数使用 0 和 1 创建整数。以下代码将帮助我们更好地理解这一点。

示例

 在线演示

#include<iostream>
using namespace std;
int numberOfValues(int p, int n) {
   if (p > n)
      return 0;
   return 1 + numberOfValues(p * 10, n) + numberOfValues(p * 10 + 1, n);
}
int main() {
   int n = 120;
   cout << "Number of values using 0s and 1s: " << numberOfValues(1, n);
}

输出

Number of values using 0s and 1s: 7

更新日期:2019 年 12 月 19 日

154 次访问

开启您的 职业生涯

完成课程获得认证

开始
广告