用递归计算数字的数字

时间:2015-01-24 12:25:29

标签: c++

#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位的数字。有人知道为什么吗?

2 个答案:

答案 0 :(得分:1)

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

对于超过十位数的数字,它不起作用,因为系统上int可以表示的最大数字有十位数。在32位系统上,它是2,147,483,647

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

答案 1 :(得分:0)

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