题目描述
求1个整数的第k位数字有很多种方法。
以下的方法就是一种。
// 求x用10进制表示时的数位长度
int len(int x){
if(x<10) return 1;
return len(x/10)+1;
}
// 取x的第k位数字
int f(int x, int k){
if(len(x)-k==0) return x%10;
return _____________________; //填空
}
int main()
{
int x = 23574;
printf("%d\n", f(x,3));
return 0;
}
注意理解递归 出口是len(x)和k相等的时候 如果不相等 就删掉当前数位往前继续找
依次x除以10,表示将前几位去掉,当最后达到对应位值时候,跳出循环。
#include<bits/stdc++.h>
using namespace std;
int len(int x){
if(x<10) return 1;
return len(x/10)+1;
}
// 取x的第k位数字
int f(int x, int k){
if(len(x)-k==0) return x%10;
return f(x/10,k); //填空 递归取数位
}
int main()
{
int x = 23574;
printf("%d\n", f(x,3));
return 0;
}