关闭

递归---把一个整数反转处理

784人阅读 评论(0) 收藏 举报
分类:

如果非得用递归来解决整数反转处理,只能增加一个参数 ,记录每次计算出的位数的阶。

在main()中,直接调用hjd_reverse_int_Helper(int nNum),例如:hjd_reverse_int_Helper(1230)就得到321。

////////////////////////////////////////////////////////////////////////////////////////////
//不直接调用的函数,由Helper函数来调用
//nNum:需要进行反转的数
//nPow:记录有几阶,例如123就是3阶
int hjd_reverse_int(int nNum, int nPow)
{
  int nRes = 0;

  if (((nNum/10)>0)&&(nPow>1))
  {
    nRes = (nNum%10)*pow(10, nPow-1)+hjd_reverse_int(nNum/10, nPow-1);
  }
  else if ((nPow==1)&&((nNum/10)<=0))
  {
    nRes = nNum;
  }
  return (nRes);
}

///////////////////////////////////////////////////////////////////////////////////////////
//供用户使用的函数
int hjd_reverse_int_Helper(int nNum)
{
  int nRes = 0, nPow = 1, nNumTmp = nNum;
  if (nNum >= 0)
  {
    if ((nNum / 10) == 0)
    {
      nRes = nNum;
    }
    else //nNum>10
    {
      nNumTmp = nNum;
      while ((nNumTmp / 10) > 0)
      {
        nNumTmp = nNumTmp/10;
        nPow++;
      }
      nRes = hjd_reverse_int(nNum, nPow);
    }
  }
  else
  {
    nRes = hjd_reverse_int_Helper((-1) * nNum);
    nRes = (-1) * nRes;
  }
  return (nRes);
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

递归实现字符串字符反转

题目: 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。 思路分析:以ABCD...
  • Juice521Cai
  • Juice521Cai
  • 2015-05-12 10:03
  • 889

NOIP 数字反转

#include using namespace std; int main() { int n,m=0; cin>>n; while(n!=0) { m=m*10+n%10; n/...
  • zzh19991228
  • zzh19991228
  • 2015-11-06 22:10
  • 365

递归和非递归实现链表反转

链表反转是面试笔试常考题目,直接贴代码。 反转函数如下://思路为将节点从前到后依次放到表头,最后最后的节点到了最前面,最前面的节点到了最后面 void ReverseList(ListNode * ...
  • yunzhongguwu005
  • yunzhongguwu005
  • 2013-08-26 16:43
  • 12644

<OJ_Sicily>数字反转

利用栈的数据结构实现数字反转
  • Vipin_Pei
  • Vipin_Pei
  • 2016-06-06 12:40
  • 1460

链表翻转的图文讲解(递归与迭代两种实现)

链表的翻转是程序员面试中出现频度最高的问题之一,常见的解决方法分为递归和迭代两种。最近在复习的时候,发现网上的资料都只告诉了怎么做,但是根本没有好好介绍两种方法的实现过程与原理。所以我觉得有必要好好的...
  • FX677588
  • FX677588
  • 2017-05-17 15:25
  • 1026

单链表反转(递归和非递归)

单链表反转有递归和非递归两种算法。 下面定义节点 typedef struct ListNode{ int value; ListNode* next; }ListNode; 在递归算法中的做法是...
  • KangRoger
  • KangRoger
  • 2014-03-02 10:53
  • 19798

【剑指offer】递归循环两种方式反转链表

本文分别用非递归和递归两种方式实现了链表的反转,在九度OJ上测试了非递归版本,AC。 题目描述: 输入一个链表,反转链表后,输出链表的所有元素。 (hint : 请务必使用链表) 输入: 输入可能包含...
  • mmc_maodun
  • mmc_maodun
  • 2014-05-14 07:56
  • 4564

java实现单链表反转(递归方式)

public class DiGuiFanZhuan { public static void main(String[] args) { Node head = new Node(0)...
  • u014430697
  • u014430697
  • 2015-11-24 21:16
  • 1784

单链表的反转(递归)

单项链表的反转指的是这样一类问题:给定一个单项链表的头指针 head,写一个算法,将其反转,并返回新的头指针 newHead。 注意点: (1)一般我们构建的单链表有两种,第一种是有头节点的单链表...
  • cyuyanenen
  • cyuyanenen
  • 2016-05-22 10:15
  • 1086

数字反转(升级版)

题目描述 给定一个数,请将该数各个位上数字反转得到一个新数。 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反...
  • wzw1376124061
  • wzw1376124061
  • 2016-07-12 08:27
  • 280
    个人资料
    • 访问:11670次
    • 积分:423
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条