数据结构之递归打印实数

原创 2013年12月02日 21:09:42

问题:只使用处理I/O的printDigit函数,编写一个函数来输出任意double型变量(可以是负数)

解决:要输出double型变量,首先要输出任意整数(可以是负数),然后才能输出实数(可以是负数)

代码:

输出任意整数(可以是负数)的c++代码如下:

#include<iostream>
#include<math.h>//math.h库
using namespace std;
void printDigit(int n);
void main(){
int n;
cin>>n;
printDigit(n);

}
void printDigit(int n){

if(abs(n)>=10){
printDigit(n/10);
cout<<abs(n)%10;
}
else cout<<n%10;

}


下面考虑输出任意实数,整数和实数主要是小数点的区别,小数点前一部分和后一部分均为整数

思路:

1.  获得实数的整数部分:intPart = n    intPart 为int 型,n为double 型

2.  打印出整数部分:printDigit(intPart)。

3.  如果有小数部分,跟着打印小数点:printf(“.”);然后获得小数部分:dicPart = n – intPart    dicPart 为double型。

4.  如果有小数部分,将小数部分转换为整数,然后用printDigit()函数打出。

  for(i = 0; i < pointNum;i++)

              {

                   dicPart *= 10;

              }

          //小数部分都为正整数,整个实数的符号位已经由整数部分处理好了

              Int dicInt = abs(dicPart);

         //打印

         printDigit(dicInt);

代码:

#include<iostream>
#include<math.h>
using namespace std;
void printDigit(int n);
void printReal(double n,int pointNum);
void main(){
double n;
int pointNum;
cin>>n>>pointNum;
printReal(n,pointNum);
}
void printDigit(int n){
if(abs(n)>=10){
printDigit(n/10);
cout<<abs(n%10);
}
else cout<<n%10;

}
void printReal(double n,int pointNum){
int intPart;
double dicPart;
intPart=(int)n;
dicPart=(double)(n-intPart);
printDigit(intPart);
if(pointNum>0){
for(int i=0;i<pointNum;i++){
dicPart*=10;
}
cout<<".";
printDigit(abs(dicPart));
cout<<dicPart;
}
}



数据结构之二叉树递归操作

二叉树(binary tree)是n(n>=0)个结点的有限结合,该集合或者为空集(空二叉树),或由一个根结点和两棵互不相交的,分别称为根结点的左子树(left subtree)和右子树(right...
  • BAT_os
  • BAT_os
  • 2015年11月20日 02:15
  • 814

【数据结构】单链表—从尾到头输出单链表 — 栈 / 递归

题目:输入一个链表的头节点,从尾到头反过来打印每个节点的值思路一:遍历的顺序是从头到尾,而输出的顺序是从尾到头,也就是说第一个遍历的最后一个输出,最后一个遍历的第一个输出,这是先进后出,我们可以借助栈...
  • liuxiaoqian_
  • liuxiaoqian_
  • 2016年07月26日 12:01
  • 733

数据结构之递归

递归 在学习数据结构中,这是一个非常重要的知识 递归就是函数直接或间接的调用本身。 下面给出几个递归的经典的例子 1.从1+2+3+4+...+n #include int f(int n...
  • mostercode15
  • mostercode15
  • 2015年04月12日 20:49
  • 671

严蔚敏-数据结构-递归算法总结

在看严蔚敏的数据结构视频,在32课时的时候,对递归算法进行了总结。在网上没找到对应的资料。而严蔚敏老师总结的又很不错,所以觉得有必要这里记录下(不是完全照搬,详细可以去找对应的视频)。一共有5点。  ...
  • cainiaohhf
  • cainiaohhf
  • 2013年12月19日 20:18
  • 3233

数据结构之---栈和递归&函数调用

更正:以下所指ebx应改为eax。 EBX指“基地址”寄存器,在内存寻址时存放基地址;、 EAX是累加器(accumulator),一般用来保存函数的返回值。首先说说递归的实现和栈的关系吧,这里引...
  • github_35681219
  • github_35681219
  • 2016年09月11日 17:11
  • 1124

LintCode 用递归打印数字

用递归的方法找到从1到最大的N位整数。 样例 给出 N = 1, 返回[1,2,3,4,5,6,7,8,9]. 给出 N = 2, 返回[1,2,3,4,5,6,7,8,9,10...
  • sinat_30440627
  • sinat_30440627
  • 2017年03月22日 13:01
  • 359

数据结构与算法 -- 再论递归

之前在总结函数的时候,有讲过递归。参看:C语言再学习 -- 函数 正在看数据结构与算法分析,开篇就讲到递归,那现在就详细讲解下它吧...
  • qq_29350001
  • qq_29350001
  • 2017年02月09日 15:08
  • 1728

递归创建二叉树以及一些基本操作

递归创建二叉树以及一些基本操作基本内容 二叉树的基本概念和遍历方式 使用递归创建一个简单的二叉树 二叉树使用递归遍历时的调用栈帧 实现代码 一些基本操作的递归实现 一、一些基本的东西首先我们要明确,二...
  • juxin960811
  • juxin960811
  • 2017年05月27日 20:08
  • 908

【数据结构】二叉树的前中后序遍历递归和非递归实现

二叉树有很多操作,而二叉树的遍历只是其中的一个基本操作。 二叉树的遍历方式有3种:前序遍历,中序遍历,后序遍历。前中后遍历顺序是根据什么时候遍历根节点来说的。...
  • e_one
  • e_one
  • 2016年01月28日 22:24
  • 5795

递归实现字符串逆序打印

01递归方式逆序打印 02递归和全局变量(把逆序的结果存入全局变量) 03递归和非全局变量(递归指针做函数参数)...
  • songshiMVP1
  • songshiMVP1
  • 2015年09月01日 16:28
  • 767
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构之递归打印实数
举报原因:
原因补充:

(最多只允许输入30个字)