c++-C++算法:通过递归算法实现非零数字反转

问题描述

C++算法:通过递归算法实现非零数字反转

事例:
321------123
1568-----8651

解决方案

 #include <iostream>
using namespace std;
void foo(int x)
{
    if (x == 0) return;
    cout << x % 10;
    foo(x / 10);
}
int main()
{
    int i = 123;
    foo(i);
}

解决方案二:

还有,如果小于0,要先输出符号,然后再反转

解决方案三:

用字符串读入,然后判断第一位是—就输出—,然后从后往前一个字符一个字符的输出

解决方案四:

整数反转的递归算法
递归实现字符串反转算法

时间: 2024-12-13 12:30:52

c++-C++算法:通过递归算法实现非零数字反转的相关文章

template-c++ 编写类似于标准库中find算法的模板,非引用形参和引用形参的区别是什么

问题描述 c++ 编写类似于标准库中find算法的模板,非引用形参和引用形参的区别是什么 #include <iostream> #include <string> #include <vector> using namespace std; template<typename Init,typename T> Init find(Init begin,Init end,const T& val){ while(begin!=end){ if(val

妹纸求助-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 要求从这个矩阵中找出这些国都名,并输出它们的

如何使用递归和非递归方式反转单向链表

以下是对使用递归和非递归方式反转单向链表的示例进行了详细的分析介绍,需要的朋友可以过来参考下   问题: 给一个单向链表,把它从头到尾反转过来.比如: a -> b -> c ->d 反过来就是 d -> c -> b -> a . 分析:假设每一个node的结构是: 复制代码 代码如下: class Node {  char value;  Node next; } 因 为在对链表进行反转的时候,需要更新每一个node的"next"值,但是,在更新

Java算法之递归算法计算阶乘_java

本文为大家分享的java算法计算阶乘,在学习Java课程时经常会遇到求阶乘问题,今天接跟大家一起探讨一下 代码如下: package com.xu.main; import java.util.Scanner; public class P9 { static long fact(int n) { if(n <= 1) { return 1; } else { return n * fact(n - 1); } } public static void main(String[] args) {

迭代算法与递归算法的概念及区别

迭代算法是用计算机解决问题的一种基本方法.它利用计算机运算速度快.适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值. 利用迭代算法解决问题,需要做好以下三个方面的工作: 一.确定迭代变量.在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 二.建立迭代关系式.所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系).迭代关系式的建立是解决迭代问

如何使用递归和非递归方式反转单向链表_C 语言

问题:给一个单向链表,把它从头到尾反转过来.比如: a -> b -> c ->d 反过来就是 d -> c -> b -> a . 分析:假设每一个node的结构是: 复制代码 代码如下: class Node { char value; Node next;} 因为在对链表进行反转的时候,需要更新每一个node的"next"值,但是,在更新 next 的值前,我们需要保存 next 的值,否则我们无法继续.所以,我们需要两个指针分别指向前一个节点

算法-java有1234个数字能组成多少个有两个重复的3位数字

问题描述 java有1234个数字能组成多少个有两个重复的3位数字 java有1234四数字能组成多少个有两个重复的3位数字,java有1234四数字能组成多少个有两个重复的3位数字,java有1234四数字能组成多少个有两个重复的3位数字 解决方案 2 6*C 1234 解决方案二: 6*C下面是1234,上面是2 解决方案三: 如果我没理解错你的意思,那么这题是一个从四个数字中选出两个进行三位数字的排列组合的问题.根据大学(还是高中?)的排列组合知识就是: C2/4 乘以 3 =36种,具体

求助一道二维数组交换特定元素位置的算法题,谢谢大家!

问题描述 求助一道二维数组交换特定元素位置的算法题,谢谢大家! 刚试验了一下出了新问题- - 比如,一开始是左边的数组,我想"把2个0去掉,然后0上面的2就掉下来了",形成右边的新数组 然后我用了循环遍历,比如只看第二列,我的做法是"从下往上找,遇到0,就和0上面的数字交换",结果成了下面这个样子了- - 我有个改进想法是"还是从下往上找,遇到0之后判断上面的是不是0,如果是0,再继续向上再找,直到不是0,然后把这个数赋值给一开始那个0的位置",

C++高精度实现10000位数字的乘除法

说明:做了个计算器,本来是要上传整个项目的,但突然发现不能上传资源了,就贴出来 算法部分的代码,大家多多指点啊,呵呵,比较难读,以后再上传整个项目,呵呵 //转换,供乘法部分调用 int turn(char s[], int num[]) { int i = 0, len, j; while(1) { if(s[i] == 0) break; else if(s[i] == '-' || s[i] == '0') i++; else break; } //i指向第一个非零数字 for (j =