1160:倒序数[递归]
题目表述:
输入一个非负整数,输出这个数的倒序。例如输入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:倒序数[递归]相关推荐
- 信息学奥赛一本通 1160:倒序数
[题目链接] ybt 1160:倒序数 [题目考点] 1. 递归 [解题思路] 解法1: 递归输出倒序数 递归问题:输出数字n的倒序数 递归关系:要想输出数字n的倒序数,可以先输出数字n倒序数的最高位 ...
- 信息学奥赛一本通(1160:倒序数)
1160:倒序数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 19427 通过数: 13887 [题目描述] 输入一个非负整数,输出这个数的倒序数.例如 ...
- 倒序数(信息学奥赛一本通-T1160)
[题目描述] 输入一个非负整数,输出这个数的倒序数.例如输入123,输出321. [输入] 输入一个非负整数(保证个位不为零). [输出] 输出倒序的数. [输入样例] 123 [输出样例] 321 ...
- 神奇的数学之回文数(不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数)
神奇的数学之回文数 Description 回文数是一种数字.如:8008, 这个数字正读是8008,倒读也是8008,正读倒读一样,所以这个数字就是回文数. 任取一个正整数,如果不是回文数,将该数与 ...
- 三位数倒序数C语言,C语言求助!一个三位数的逆序数,总是编不对
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include int main() { int n,a,b,c,sum,ge,shi,bai; printf(&q ...
- c语言判断任意位数能否倒序数,C语言求助!一个三位数的逆序数,总是编不对...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include int main() { int n,a,b,c,sum,ge,shi,bai; printf(&q ...
- 信息学奥赛一本通超详细题解,动画图文题解
内容来源于微信公众号:大神编程.已经过原文作者授权. 更新时间:2020-11-5 现在开始更新基础算法题. 个人感言:从未见过如此详细的题解,动画.图文结合,适合任何水平的选手.尤其是特别适合自学的 ...
- 2019-1-17王志颖 c语言作业
问题:递归的终止条件和返回值判断 /* 求得两个整型数中较大的那一个 */ #include<stdio.h> int bigger_than(int a,int b) { i ...
- 几种快速傅里叶变换(FFT)的C++实现
链接:http://blog.csdn.net/zwlforever/archive/2008/03/14/2183049.aspx 一篇不错的FFT 文章,收藏一下. DFT的的正变换和反变换分别 ...
最新文章
- 苹果系统怎么降低版本_1903、1809...到底怎么看系统版本?
- 5.9 QR分解--Gram-Schmidt 分解
- REVERSE-PRACTICE-BUUCTF-8
- python3 应用 nose_parameterized 实现unittest 参数化
- 算法实现:返回单链表的倒数第pos个节点
- [ESC] EnTT 学习记录 2
- java里的多线程同步机制
- pythonrandom函数_python之random函数
- Java 算法 格雷码
- linux grub error 22,Linux系統grub常見錯誤問題解決
- 网友用筋膜枪提升手速抢茅台,平台回应不可靠,用了你也抢不到!
- MNIST数据集手写数字识别(一)
- 微信小程序富文本组件mp-html
- php 放大镜代码,jQuery实现放大镜效果实例代码_jquery
- 【转】@JsonAlias和@JsonProperty注解使用详解
- C语言练习题 时钟指针
- 新概念二册 Lesson 29 Taxi!出租汽车! (复习现在完成时)
- linux中rm件命令,Linux rm命令详解
- jetson nano运行darknet_ros的环境配置
- Chrome浏览器ERR_INVALID_SIGNED_EXCHANGE解决方案