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;
}