簡體   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