[英]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 long
或uint64_t
。
在32位計算機上,整數為32位長。 您可以獲得的最大有符號整數是2^31 - 1 = 2147483647
,它有10位數字。 您必須使用字符串來允許任意大數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.