用递归计算数字的位数
count the digits of a number with recursion
#include<iostream>
using namespace std;
bool recursion(int numb, int k, int br)
{
if(br==1) return (numb==k);
return k==(numb%10) || recursion(numb/10,k,br-1);
}
int main(){
int num,n;
cin>>num;
n=num;
int p;
cin>>p;
int br=1;
while(n>10){
n=n/10;
br++;
}
cout<<br<<endl;
cout<<recursion(num,p,br);
return 0;
}
这是计算数字数字的整个程序,但它不适用于超过 10 位的数字。有人知道为什么吗?
首先,您的递归程序不计算数字中的数字,它会检查特定数字k
是否存在于数字numb
的最后 br
位数字中。
它不适用于超过十位的数字,因为系统上int
可以表示的最大数字有十位数字。在 32 位系统上,它是 2,147,483,647
.
要使其适用于更多数字,请使用更大的数据类型 - 例如 long long
或 uint64_t
。
在 32 位机器上,整数的长度为 32 位。您可以获得的最大有符号整数是 2^31 - 1 = 2147483647
它有 10 位数字。你必须使用字符串来允许任意大的数字。
相关文章:
- 使用变量模板的递归计算 - gcc 与 clang
- 使用递归计算一个函数中的高度和大小
- 如何使用递归计算从 0 到给定数字的奇数?
- 优化递归问题以计算超级数字
- 递归函数用于计算 n 个数字之和的意外输出
- 递归计算满足条件的值数并返回该数字
- 将目标数字拆分为一系列数字(递归任务)
- 通过递归计算模数而不使用模除法
- 使用条件运算符递归计算模板化值或函数时出现错误 C1202(堆栈溢出)
- 递归计算在不使用静态局部变量,全局变量或静态函数的情况下,在递归函数中发生的环数
- 递归计算函数f = n!/(c^n)的值
- friend get 函数,返回通过可变参数模板递归计算的类型
- 用递归计算函数f(n)
- 在 C++ 中使用递归计算值 Pi (π)
- 求和数字递归C++
- 用递归计算数字的位数
- C++:递归计算所有数字0-9的置换
- 使用迭代和递归计算阶乘时的不同答案
- 如何使用递归计算从点 A 到 B 的可用路径数
- 使用递归计算数组中某个元素出现的次数