递归求任意整数的根

如题,各位数字相加,不断加,加到一个数为止。

如24的根是6

39的根是3

代码:

#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int gen(int n)
{
    if(n<10)
    {
        return n;
    }
    else
    {
        int x=0;
        do
        {
            x+=n%10;
            n=n/10;
        }
        while(n>0);
        return gen(x);
    }
}
int main()
{
    int a;
    cin>>a;
    cout<<gen(a);
}

调试通过

原文地址:https://www.cnblogs.com/wanjinliu/p/11386249.html

时间: 2024-10-22 05:07:56

递归求任意整数的根的相关文章

训练三:求任意整数的降序数

题目要求: 对一个五位的任意整数,求出琦降序数 算法提示:将整数的每一位分离到一维整形数组中,再将数组a的元素按照降序排列,最后输出数组元素值, 试建立一个NUM类,完成上述操作 #include<iostream> using namespace std; class NUM { public: NUM(int x);//定义一个带参数的构造函数 void NUM_fengjie(); void NUM_paixu(); void NUM_display(); private: int a[

C++程序设计实践指导1.3求任意整数降序数改写要求实现

改写要求1:动态生成单链表存储 #include <cstdlib> #include <iostream> using namespace std; struct LinkNode { int data; struct LinkNode *next; }; class NUM { int n; public: NUM(int x) { n=x; } struct LinkNode * descrease(); void show(LinkNode* pHead) { LinkNo

谭浩强 c程序设计 8.17用递归法将一个整数n转换成字符串。例如,输入486,应输出字符串&quot;486&quot;。n的位数不确定,可以是任意位数的整数。

8.17用递归法将一个整数n转换成字符串.例如,输入486,应输出字符串"486".n的位数不确定,可以是任意位数的整数. #include <stdio.h> char str1[20];int i=0;long n;int main(){        int longToStr(long n);    char *revstr(char *str, int len);    printf("请输入一个整数n:\n");    scanf("

28.求任意一个整数的十位上的数字

#include<iostream> using namespace std; int main() { int i,j,n; cout<<"please input an number :"<<endl; cin>>n; if(n/10<1) { cout<<0; }else { i=n/10; j=i%10; cout<<j; } return 0; } 28.求任意一个整数的十位上的数字

PJOI PKU Campus 2011 B:A Problem about Tree LCA 求任意点x为根的y的父节点

题目链接:点击打开链接 题意:给定n个点 m个询问 下面n-1行给定一棵树 m个询问 x y 问把树转成以x为根 y的父节点是谁 第一种情况lca==y那就是x的第 dep[x] - dep[y] -1 父亲,依次向上爬山坡,利用倍增的二进制加速. 第二种就是Father[y]; #include"cstdio" #include"iostream" #include"queue" #include"algorithm" #i

利用递归求阶乘

1 package com.d; 2 3 import java.util.Scanner; 4 5 public class Digui { 6 7 public static void main(String[] args) { 8 Digui d = new Digui(); 9 10 System.out.println("请输入一个整数"); 11 Scanner scan = new Scanner(System.in); 12 int a = scan.nextInt()

【编程题目】有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;(需要回头仔细研究)

32.(数组.规划)有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序:要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小.例如: var a=[100,99,98,1,2,3];var b=[1,2,3,4,5,40]; 首先,目标一定是先找到n个数字,使得数字和比总和的一半小,但是最接近. 思路一:开始看这道题跟之前学的动态规划很像,就想用动态规划来解.但是....做不出来........... 必须要选一半的数字让我头都大了. 思路二:

求任意多边形的面积(转)

原文地址:http://blog.csdn.net/sun_shine_/article/details/18799739 给定多边形的顶点坐标(有序),让你来求这个多边形的面积,你会怎么做?我们知道,任意多边形都可以分割为N个三角形,所以,如果以这为突破点,那么我们第一步就是把给定的多边形,分割为数个三角形,分别求面积,最后累加就可以了,把多边形分割为三角形的方式多种多样,在这里,我们按照如下图的方法分割: 图1 S点作为起始点(点1),a->e依次作为点2,3…….一个三角形的面积是怎样的呢

蓝桥杯 算法训练 ALGO-151 6-2递归求二进制表示位数

算法训练 6-2递归求二进制表示位数 时间限制:10.0s   内存限制:256.0MB 问题描述 给定一个十进制整数,返回其对应的二进制数的位数.例如,输入十进制数9,其对应的二进制数是1001,因此位数是4. 样例输入 一个满足题目要求的输入范例.9 样例输出 与上面的样例输入对应的输出. 数据规模和约定 输入数据中每一个数的范围. 例:输入在int表示范围内. 题目解析: 在 Java 的 Integer 类的方法中,有将十进制数转换为二进制.八进制和十六进制的三个方法.若参数为正整数,则