进制转化,阶乘(递归法和迭代法)

例如:10 进制转 16 进制,计算公式如下例

  • 1958 转 16 进制
  • 1958 % 16 == 6 1958 / 16 == 122
  • 122 % 16 == 10 也就是 A 122 / 16 == 7
  • 7 < 16
  • 1958 的 16 进制 为 7A6
  • 注意:商作为下一次的被除数
  • 余数保留下来,(定义一个字符串,每次都ADD进去)。但是。是十六进制,要将9以上的转化为字符、
  • public static String decToHex(int n) {
    String r = "";
    while (n > 16) {
        int yushu = n % 16;
        int shang = n / 16;
    
        if (yushu > 9) {
            char c = (char)((yushu - 10) + ‘A‘);
            r += c;
        } else {
            r += yushu;
        }
    
        n = shang;
    }
    
    if (n > 9) {
        char c = (char)((n - 10) + ‘A‘);
        r += c;
    } else {
        r += n;
    }
    
    return reverse(r);

    }

    / 利用递归方式计算阶乘 重复调用
    public static long factorial(int n) {
    if (n == 0 || n == 1) {
    return 1;
    } else {``
    return n * factorial(n - 1);
    }
    }

// 利用迭代方式计算阶乘 保留上次结果,追加
public static long factorial2(int n) {
int r = 1;
for (int i = 1; i <= n; i++) {
//r = r i;
r
= i;
}

return r;

}

原文地址:https://blog.51cto.com/14232658/2441976

时间: 2024-11-08 16:50:06

进制转化,阶乘(递归法和迭代法)的相关文章

进制转化之递归 &amp;&amp; 栈

将10进制转换成2进制,是除以2得到的余数,再倒序排列,这可以用递归实现,也可以用数据结构--栈实现. 先看递归实现: 1 #include<stdio.h> 2 void to_two(int num); 3 int main() 4 { 5 int a = 10; 6 to_two(a); 7 8 return 0; 9 } 10 /*递归实现把一个数转成16/8/2进制*/ 11 //转16/8/2进制分别求余16/8/2,再除以16/8/2 12 //10 转 2进制 13 void

Java Integer 进制转化的实现(附源码),对模与补码的理解

1.toBinaryString方法的实现 1 public static String toBinaryString(int i) { 2 return toUnsignedString0(i, 1); 3 } 4 private static String toUnsignedString0(int val, int shift) { 5 // assert shift > 0 && shift <=5 : "Illegal shift value";

c语言进制转化

#include <stdio.h> // 进制转化 int main(void) { int i1 = 12; int i2 = 88; int i3 = 0x32C; printf("八进制输出i1 = %o\n", i1); // 14 printf("十六进制输出i2 = %x\n", i2); // 58 printf("十六进制输出i3 = %x\n", i3); // 32c printf("十进制输出i3 =

UVA 10061 How many zero&#39;s and how many digits ? (m进制,阶乘位数,阶乘后缀0)

题意:给出两个数字a和b,求a的阶乘转换成b进制后,输出(1)后缀中有多少个连续的0? (2)有多少位? 思路:逐个问题解决. 设a!=k.  k暂时不用直接转成b进制. (1)阶乘后缀0问题.先看这个十进制后缀0的例子:http://www.cnblogs.com/xcw0754/p/4604473.html 解法差不多,稍变化. 首先将b分解成若干质数(比如8={2*2*2})保存在一个集合A中(注意自然数的质数分解是唯一的),只要有一个序列A就能构成一个0,因为满b就进位,b可以表示成10

栈的应用之进制转化

顺序栈的代码: 不再赘述:点击打开链接 //栈的应用-----进制转化 #include"stack.h" int main() { Stack st; InitStack(&st); int select; int num1; //要转化的数 int num2; //转化之后各个位的数 int flag = 1; //控制循环结束 while(flag) { cout<<"****************进制转换*****************&quo

计算机基础知识_进制转化

进制转化 一.任何一个进制转化为10进制的方式 156的十进制可以看做1*10^2 + 5*10^1  +   6*10^0 首先我们看一下156 ,平方,次方等等都是根据后面有多少位决定的,如果用计算机计算,则正好是156 33是一个八进制可以看做3*8^1+3*8^0 次方  换算出来就是10进制 如果你本身是x进制,那么你的数字就看做  num * x^位数  比如我有一个16进制的数字,转为10进制 16进制在计算机中表示方法: 1 2 3 4 5 6 7 8 9 a b c d e f

python数据结构:进制转化探索

*********************************第一部分******************************************************************* *********************************************************************************************************************** # 输入excel的行号,输出对应列的序号(从0开

标识符,进制转化,原反补码等

标识符 Java对包.类.方法.参数.变量等要素命名时使用的字符序列. 规则:***** 1.由字母(含中.英.日.俄等).数字.下划线_和美元符号$组成. 2.不能以数字开头   int 123a=1; 3.区分大小写  int a=1和int A=1是不一样的. 4.长度无限制.(一般编程长度不超过15个字符) 5.不能是Java中的保留字和关键字    int class="1"    int ainta=1 保留字和关键字都有哪些?我们知道以后应该避开它们. 标识符命名习惯:*

实现10进制转化成其它进制

<?php/** * Created by PhpStorm. * User: lenovo * Date: 2016/4/1 * Time: 17:10 */ header('content-type:text/html;charset=utf-8'); // 获取被转化数字及转化进制 $num = isset($_POST['num'])?$_POST['num']:''; $connect = isset($_POST['connect'])?$_POST['connect']:''; /