繁体   English   中英

用递归计数数字

[英]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位以上的数字。 有人知道为什么吗?

首先,您的递归程序没有计算数字中的位数,而是检查数字numb的最后br数字中是否存在特定的数字k

它不适用于十位数以上的数字,因为int可以代表系统上的最大数字为十位数。 在32位系统上为2,147,483,647

要使用更多数字,请使用更大的数据类型,例如long longuint64_t

在32位计算机上,整数为32位长。 您可以获得的最大有符号整数是2^31 - 1 = 2147483647 ,它有10位数字。 您必须使用字符串来允许任意大数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM