题目表述:

输入一个非负整数,输出这个数的倒序。例如输入123,输出321。

输入:

一个个位不为0的非负整数。

输出:

倒序之后的数。

输入样例:123

输出样例:321

思路:

因为,我是按照递归算法的两个要素来做的,所以,

停止的条件:  (因为这个比较好找)

n<0。(我想的是一个一个提取)

递归关系式:  (这个我想了一短时间)

d(n)=(n%10)*10+d(n/10)

一开始,我以为是这样的。但是隐隐约约觉得不对劲。

于是,程序的雏形就打出来了。

#include<iostream> //使用iostream库
#include<cstdio> //使用cstdio库
using namespace std;
int d(int x) //运用递归的d函数
{if(x<10) //停止的条件return x;else //递归关系式return (x%10)*10+d(x/10);
}
int main() //主函数
{int a;//要被倒序的数cin>>a;//输入cout<<d(a);//输出return 0;
} 

试验了之后,果然不对劲。

仔细一想:

123%10=3, 3*10=30, 123/10=12, 12%10=2,  2*10=30, 12/10=1,30+20+1=51

但是,

我想的是

3*123的最高位=300+2*12的最高位=20+1=321

所以呢,要算出最高位才行,我查了一下,但并没有软件自带的这种函数,我就只能自己建一个自定义函数。

#include<iostream> //使用iostream库
#include<cstdio> //使用cstdio库
using namespace std;
int a(int y)//用来算最高为的函数
{int i;for(i=10;y/i>=10;i*=10)//一直缩位{}return i-1;//然后再减去一位输出
}
int d(int x) //运用递归的d函数
{if(x<10) //停止的条件return x;else //递归关系式return (x%10)*a(x)+d(x/10);
}
int main() //主函数
{int a;//要被倒序的数cin>>a;//输入cout<<d(a);//输出return 0;
} 

难道这就对了吗?

当然不是

我又想了想,觉得函数d应该没有问题。目光又看向了函数a,for应该没问题,但return应该有问题,于是,就把,-1去掉了。

递归关系式最后就成了:

d(1)=1*1

d(12)=2*10+d(1)

d(123)=3*100+d(12)

#include<iostream> //使用iostream库
#include<cstdio> //使用cstdio库
using namespace std;
int a(int y)//用来算最高为的函数
{int i;for(i=10;y/i>=10;i*=10)//一直缩位{}return i;//最后输出
}
int d(int x) //运用递归的d函数
{if(x<10) //停止的条件return x;else //递归关系式return (x%10)*a(x)+d(x/10);
}
int main() //主函数
{int a;//要被倒序的数cin>>a;//输入cout<<d(a);//输出return 0;
} 

这次会对吗?

噢噢噢噢噢噢噢噢噢噢噢

噢噢噢噢噢噢噢噢噢噢噢

噢噢噢噢噢噢噢噢噢噢噢

噢噢噢噢噢噢噢噢噢噢噢

噢噢噢噢噢噢噢噢噢噢噢

噢噢噢噢噢噢噢噢噢噢噢

噢噢噢噢噢噢噢噢噢噢噢

咱们接着测

最后

让网站来打个圆场

拜拜!

1160:倒序数[递归]相关推荐

  1. 信息学奥赛一本通 1160:倒序数

    [题目链接] ybt 1160:倒序数 [题目考点] 1. 递归 [解题思路] 解法1: 递归输出倒序数 递归问题:输出数字n的倒序数 递归关系:要想输出数字n的倒序数,可以先输出数字n倒序数的最高位 ...

  2. 信息学奥赛一本通(1160:倒序数)

    1160:倒序数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 19427     通过数: 13887 [题目描述] 输入一个非负整数,输出这个数的倒序数.例如 ...

  3. 倒序数(信息学奥赛一本通-T1160)

    [题目描述] 输入一个非负整数,输出这个数的倒序数.例如输入123,输出321. [输入] 输入一个非负整数(保证个位不为零). [输出] 输出倒序的数. [输入样例] 123 [输出样例] 321 ...

  4. 神奇的数学之回文数(不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数)

    神奇的数学之回文数 Description 回文数是一种数字.如:8008, 这个数字正读是8008,倒读也是8008,正读倒读一样,所以这个数字就是回文数. 任取一个正整数,如果不是回文数,将该数与 ...

  5. 三位数倒序数C语言,C语言求助!一个三位数的逆序数,总是编不对

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include int main() { int n,a,b,c,sum,ge,shi,bai; printf(&q ...

  6. c语言判断任意位数能否倒序数,C语言求助!一个三位数的逆序数,总是编不对...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include int main() { int n,a,b,c,sum,ge,shi,bai; printf(&q ...

  7. 信息学奥赛一本通超详细题解,动画图文题解

    内容来源于微信公众号:大神编程.已经过原文作者授权. 更新时间:2020-11-5 现在开始更新基础算法题. 个人感言:从未见过如此详细的题解,动画.图文结合,适合任何水平的选手.尤其是特别适合自学的 ...

  8. 2019-1-17王志颖 c语言作业

    问题:递归的终止条件和返回值判断 /*  求得两个整型数中较大的那一个  */ #include<stdio.h> int bigger_than(int a,int b) {     i ...

  9. 几种快速傅里叶变换(FFT)的C++实现

    链接:http://blog.csdn.net/zwlforever/archive/2008/03/14/2183049.aspx 一篇不错的FFT 文章,收藏一下.  DFT的的正变换和反变换分别 ...

最新文章

  1. 苹果系统怎么降低版本_1903、1809...到底怎么看系统版本?
  2. 5.9 QR分解--Gram-Schmidt 分解
  3. REVERSE-PRACTICE-BUUCTF-8
  4. python3 应用 nose_parameterized 实现unittest 参数化
  5. 算法实现:返回单链表的倒数第pos个节点
  6. [ESC] EnTT 学习记录 2
  7. java里的多线程同步机制
  8. pythonrandom函数_python之random函数
  9. Java 算法 格雷码
  10. linux grub error 22,Linux系統grub常見錯誤問題解決
  11. 网友用筋膜枪提升手速抢茅台,平台回应不可靠,用了你也抢不到!
  12. MNIST数据集手写数字识别(一)
  13. 微信小程序富文本组件mp-html
  14. php 放大镜代码,jQuery实现放大镜效果实例代码_jquery
  15. 【转】@JsonAlias和@JsonProperty注解使用详解
  16. C语言练习题 时钟指针
  17. 新概念二册 Lesson 29 Taxi!出租汽车! (复习现在完成时)
  18. linux中rm件命令,Linux rm命令详解
  19. jetson nano运行darknet_ros的环境配置
  20. Chrome浏览器ERR_INVALID_SIGNED_EXCHANGE解决方案

热门文章

  1. 2021-07-17【普及组】模拟赛C组 总结
  2. LINUX-DNS部署 超详细
  3. 电子学会C语言一级模拟题:收集瓶盖赢大奖
  4. xamarin和mysql_Xamarin.Forms 使用本地数据库之 SQLite
  5. 注册登录显示个人中心
  6. 2007年NASDAQ中国概念股
  7. Wonderware fsGateway连INSQL,在平台的故障处理
  8. python培训班全套课程网盘
  9. JFreeChart 基本教程
  10. Bootstrap 图标文件glyphicons-halflings-regular.woff未找到