可以通过递归方法计算整数中的零数,该方法采用单个int参数并返回参数所具有的零数。
所以:
zeroCount(1000)
会回来:
3
您可以通过执行以下操作删除整数中的最后一位数:“12345/10”= 1234
您可以通过执行以下操作从整数中获取最后一位数:“12345%10”= 5
这是我到目前为止所做的:
public static int zeroCount(int num)
{
if(num % 10 == 0)
return num;
else
return zeroCount(num / 10);
}
有没有人有任何建议或想法帮助我解决这个问题?
答案 0 :(得分:5)
在脑海中运行你的代码:
zeroCount(1000)
1000 % 10 == 0
,所以你要返回1000
。这没有意义。
只需弹出每个数字并重复:
这听起来像是家庭作业,所以我会将实际代码留给您,但可以这样做:
zeroes(0) = 1
zeroes(x) = ((x % 10 == 0) ? 1 : 0) + zeroes(x / 10)
请注意,如果没有终止条件,它可以永远递归。
答案 1 :(得分:3)
public static int zeroCount(int num)
{
if(num == 0)
return 0;
if(num %10 ==0)
return 1 + zeroCount(num / 10);
else
return zeroCount(num/10);
}
这会起作用
答案 2 :(得分:0)
你必须从if和else调用你的递归函数。此外,您错过了一个基本案例: -
public static int zeroCount(int num)
{
if(num % 10 == 0)
return 1 + zeroCount(num / 10);
else if (num / 10 == 0)
return 0;
else
return zeroCount(num / 10);
}
答案 3 :(得分:0)
这是一个简单的问题,你不需要去递归 我认为更好的方法是将整数转换为字符串并检查char'0'
public static int zeroCount(int num)
{
String s=Integer.toString(num);
int count=0;
int i=0;
for(i=0;i<s.length;i++)
{
if(s.charAt(i)=='0')
{
count++;
}
}
return count;
}
答案 4 :(得分:0)
您知道 x%10 会为您提供x的最后一位数字,因此您可以使用它来识别零。此外,在检查特定数字是否为零后,您想要取出该数字,如何? 除以10 。
public static int zeroCount(int num)
{
int count = 0;
if(num == 0) return 1; // stop case zeroCount(0)
else if(Math.abs(num) < 9) return 0; // stop case digit between 1..9 or -9..-1
else
{
if (num % 10 == 0) // if the num last digit is zero
count++; // count the zero, take num last digit out
return count + zeroCount(num/10); // take num last digit out, and apply
} // the method recursively to the remaining digits
}
我使用math.Abs来允许负数,你必须导入java.lang.Math;
答案 5 :(得分:0)
import java.util.*;
public class Count
{
static int count=0;
static int zeroCount(int num)
{
if (num == 0){
return 1;
}
else if(Math.abs(num) <= 9)
{
return 0;
}
else
{
if (num % 10 == 0)
{ // if the num last digit is zero
count++;
zeroCount(num/10);
} // count the zero, take num last digit out
else if (num%10 !=0){
zeroCount(num/10);
}
}
return count;
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("Input: ");
int num = sc.nextInt();
System.out.println("Output: " +zeroCount(num));
}
}
答案 6 :(得分:0)
这里有三个条件:
1.如果数字是一位数字和0,则返回1
2.如果数字小于10,即数字1,2,3 ... 9,则返回0
3.调用零(number / 10)+零(n%10)的递归
@csrf_exempt
def paysuccess(request):
#process requests
URL ="http://example/apiusername=111390&pwd=123&circlecode=2&format=json"
#make get request
request=urllib.request.Request(URL)
response = urllib.request.urlopen(request)
#read response
n / 10将给我们从左数起的n-1位数字,而n%10将使我们得到一位数。 希望这会有所帮助!
答案 7 :(得分:0)
public static int count_zeros(int n)
{
if(n<=9)
{
if(n==0)
{
return 1;
}
else
{
return 0;
}
}
int s=n%10;
int count=0;
if(s==0)
{
count=1;
}
return count+count_zeros(n/10);
}
答案 8 :(得分:0)
int countZeros(int n){
//We are taking care of base case
if(n<=9){
if(n==0){
return 1;
}
else
{
return 0;
}
}
int last=n%10; //last element of number for e.g- 20403, then last will give 3
int count=0; //Initalsizing count as zero
if(last==0){ //We are checking either the last digit is zero or not if it will
will update count from 0 to 1
count=1;
}
return count+countZeros(n/10); //Recursive call
}
答案 9 :(得分:0)
int check(int n){
if(n==0)
return 1;
return 0;
}
int fun(int n)
{
if(n/10==0)
{
if(n==0){
return 1;
}
else{
return 0;
}
}
return check(n%10)+fun(n/10);
}
答案 10 :(得分:0)
检查出正整数:
public static int zeroCount(int number) {
if (number == 0) {
return 1;
} else if (number <= 9) {
return 0;
} else {
return ((number % 10 == 0) ? 1 : 0) + zeroCount(number / 10);
}
}
答案 11 :(得分:0)
看看这个,这是我想出的解决方案。
int countZeros(int input){
//base case
if(input == 0){
return 1;
}
int count = 0;
int lastDigit = input%10;
if(lastDigit == 0){
count = 1;
}
//calc the smallInput for recursion
int smallInput = input/10;
//set smallAns = 0, if i/p itself is not 0 and no 0 is present then return smallAns = 0
int smallAns = 0;
//recursion call
if(smallInput != 0){
smallAns = countZerosRec(smallInput);
}
//if we get lastDigit = 0 then return smallAns + 1 or smallAns + count, else return smallAns
if(lastDigit == 0){
return smallAns+count;
}
else{
return smallAns;
}}
答案 12 :(得分:0)
static int cnt=0;
public static int countZerosRec(int input) {
// Write your code here
if (input == 0) {
return 1;
}
if (input % 10 == 0) {
cnt++;
}
countZerosRec(input / 10);
return cnt;
}