C++ 用递归法计算数字的位数 #包括 使用名称空间std; 布尔递归(int numb、int k、int br) { 如果(br==1)返回(numb==k); 返回k==(numb%10)|递归(numb/10,k,br-1); } int main(){ int num,n; cin>>num; n=num; INTP; cin>>p; int br=1; 而(n>10){ n=n/10; br++; } cout

C++ 用递归法计算数字的位数 #包括 使用名称空间std; 布尔递归(int numb、int k、int br) { 如果(br==1)返回(numb==k); 返回k==(numb%10)|递归(numb/10,k,br-1); } int main(){ int num,n; cin>>num; n=num; INTP; cin>>p; int br=1; 而(n>10){ n=n/10; br++; } cout,c++,C++,首先,您的递归程序没有对数字中的数字进行计数,它会检查数字的最后br位numb中是否存在特定的数字k 它不适用于超过十位的数字,因为系统上int可以表示的最大数字有十位。在32位系统上,它是2147483647 要使用更多的数字,请使用更大的数据类型,例如,long,或uint64\t,在32位机器上,整数的长度为32位。可以得到的最大有符号整数是2^31-1=2147483647,它有10个数字。您必须使用字符串来允许任意大的数字。请查看INT\u MAX来自。如果您有支持的ocmpiler,

首先,您的递归程序没有对数字中的数字进行计数,它会检查数字的最后
br
numb
中是否存在特定的数字
k

它不适用于超过十位的数字,因为系统上
int
可以表示的最大数字有十位。在32位系统上,它是
2147483647


要使用更多的数字,请使用更大的数据类型,例如,
long
,或
uint64\t
,在32位机器上,整数的长度为32位。可以得到的最大有符号整数是
2^31-1=2147483647
,它有10个数字。您必须使用字符串来允许任意大的数字。

请查看
INT\u MAX
来自
。如果您有支持的ocmpiler,请尝试
long
而不是
INT
。尝试缩进代码(INT)有一个限制请参阅此答案否它们不是必需的。
int
的长度由实现定义。例如,在我的64位计算机上,
int
s也是32位的。
#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;
}