递归法将一个数字倒置(如:12345→54321)代码不知道哪里出错了

问题描述

递归法将一个数字倒置(如:12345→54321)代码不知道哪里出错了

public class Recursion {
public static int len(int n){
int j=0;
while(n>0)
{
j++;
n=n/10;
}
return j;
}
public static int f(int n,int k){
int i,t=n%10;
if(n<10)
{
k=n;
return k;
}
else{
for(i=0;i<len(n);i++){
k=k*10+t;
n=n/10;
t=n%10;
}
return k;
}
}
public static void main(String[] args) {
System.out.println(""+len(12345678));
System.out.println(""+f(12345678,0));

}
}

运行出来结果是
8
8765

想知道为什么????

解决方案

你知道什么是递归么?你的程序根本就不是递归。

解决方案二:

 /* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    static int mknum(int n)
    {
        if (n == 0) return 1;
        else return (int)Math.pow((double)10, (double)((int)Math.log10((double)n) - 0));
    }
    static int f(int n, int seed)
    {
        if (n == 0) return seed / 10;
        return f(n % mknum(n), n / mknum(n) * mknum(seed) * 10 + seed);
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        System.out.println(f(12345678, 0));
    }
}

解决方案三:

http://ideone.com/4nzQwc
在线运行
87654321

解决方案四:

楼主,自己调用自己叫递归。。

 package cn.baokx;  

public class Test {
    public static void main(String[] args) {
        System.out.println(fun(12345678));
    }
    public static String fun(int num){
        if(num>=10){
            return (num%10)+fun(num/10);
        }else{
            return String.valueOf(num);
        }
    }
}

解决方案五:

public static void main(String[] args) {
System.out.println(digui(12345678));
}

public static String digui(Integer t) {
    if (t < 10) {
        return t.toString();
    } else {
        Integer k = t % 10;//得到最后一个数
        t = t / 10;
        return k + digui(t);//每得到最后一个数,放在最前面,在调用方法
    }
}

解决方案六:

for(i=0;i<len(n);i++){
k=k*10+t;
n=n/10;
t=n%10;
}

循环里改变了n的值,所以循环条件len(n);也就变了,可以先把长度取出来。
int nLen = len(n);
for(i=0;i<nLen;i++){
k=k*10+t;
n=n/10;
t=n%10;
}

解决方案七:

这个题中的递归应该是
输出最后一个字符
生成一个去掉末尾字符的字符串,调用这个函数

时间: 2024-10-03 17:46:48

递归法将一个数字倒置(如:12345→54321)代码不知道哪里出错了的相关文章

数组倒置的递归算法 不知道哪出错了

问题描述 数组倒置的递归算法 不知道哪出错了 public class ReverseArray { public static void main(String[] args) { //定义数组 int a[] = {2,3,4,5,6}; reverse(a,0,a.length-1); //遍历输出 for(int i = 0;i < a.length;i++) { System.out.print(a[i]); } } //做递归 public static void reverse(i

Java使用递归法解决汉诺塔问题的代码示例_java

汉诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A.B.C,A座上有n个盘子,盘子大小不等,大的在下,小的在上(如图). 有一个和尚想把这n个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上.在移动过程中可以利用B座,要求打印移动的步骤.如果只有一个盘子,则不需要利用B座,直接将盘子从A移动到C. 如果有2个盘子,可以先将盘子1上的盘子2移动到B:将盘子1移动到c:将盘子2移动到c.这说明了:可以借助B将2个盘子从A移动到C,当然,

妹纸求助-c++编写寻找国都的算法,递归和非递归法

问题描述 c++编写寻找国都的算法,递归和非递归法 用c++编写寻找国都的代码 给出一个矩阵及一些国都名: o k d u b l i n dublin a l p g o c e v tokyo r a s m u s m b london o s l o n d o n rome y i b l g l r c bonn k r z u r i c h paris o a i b x m u z oslo t p q g l a m v lima 要求从这个矩阵中找出这些国都名,并输出它们的

java-有n元,全部兑成任意数目的1角,2角,5角组合,一共有几种组合,请使用递归法来解答

问题描述 有n元,全部兑成任意数目的1角,2角,5角组合,一共有几种组合,请使用递归法来解答 要求用java代码!有n元,全部兑成任意数目的1角,2角,5角组合,一共有几种组合,请使用递归法来解答!有java代码 解决方案 参考:http://www.iteye.com/problems/18290 public class Counter extends TestCase { public void testCounter() { Counter counter = new Counter()

小弟是新手,拜托了(递归法-推箱子)

问题描述 小弟是新手,拜托了(递归法-推箱子) 请问大大们,推箱子中如何用递归法推动3个箱子呢 Player->Box[x]->Box[y]->Box[z] 解决方案 参见汉诺塔问题,我觉得是类似的

java递归法求字符串逆序_java

本文实例讲述了java递归法求字符串逆序的方法.分享给大家供大家参考.具体实现方法如下: public static String reverseString(String x) { if(x==null || x.length()<2) return x; return reverseString(x.substring(1,x.length()))+ x.charAt(0); } 希望本文所述对大家的java程序设计有所帮助. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课

随机数字直接生成图片的ASP代码

随机数字直接生成图片的ASP代码,可以做认证码.xbm.asp<!--#include file="numcode.asp"--><%Response.Buffer = TrueWith Response.Expires = -1.AddHeader "Pragma","no-cache".AddHeader "cache-ctrol","no-cache"End With Dim num

java-spring+quartz中用cuon计数出错了,数字乱跳重复

问题描述 spring+quartz中用cuon计数出错了,数字乱跳重复 数字乱跳啊控制台输出的还有写的代码 解决方案 关于spring与quartz的集成完整的配置请参考 : http://git.oschina.net/wangkang/llsfw 然后也有完整的quartz管理模块希望能够帮到你.

new-link可制作课程表,想在左边增加第几节课的数字,自己改了代码不对了

问题描述 link可制作课程表,想在左边增加第几节课的数字,自己改了代码不对了 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static v