zoukankan      html  css  js  c++  java
  • 5.22递归实现数制转换

    Q:将输入的二进制转换为十进制表达。

    #include"stdio.h"
    #include"math.h"
    
    int biTode(int n,int *sum,int *m) {
    	char c;
    	scanf("%c",&c);
    	if(c!='#') {
    		*m=*m+1;
    		biTode(n+1,&(*sum),&(*m));
    	}
    	if(c=='1')	*sum=*sum+pow(2,(*m)-n-1);
    }
     
    	
    int main() {
    	int sum=0,m=0;
    	printf("input a binary number ending for '#'
    ");
    	biTode(0,&sum,&m);
    	printf("the decimal digit is
    ");
    	printf("%d ",sum);
    	return 0;
    }
    

      分析:算法中参数sum用来记录累加和。参数m随着递归的深入不断加1,并且递归结束m的值也不会发生变化。因为参数sum和m都要在递归中保持值得不变,因此采用指针传递方式。参数n的值随着递归的深入不断加1,但是每一层的递归n的取值都不同。在将二进制转换为十进制时,2的指数应为(*m)-n-1.输入的二进制数以字符形式存储,当输入字符#时,表示二进制字符串输入结束。在调用该算法时,参数的初值都为0。

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    QTableWidget控件总结<一>
    软件工程概论9
    软件工程概论8
    软件工程概论7
    软件工程概论6
    软件工程概论5
    软件工程概论4
    软件工程概论3
    软件工程概论2
    安装gocode教程
  • 原文地址:https://www.cnblogs.com/dd2hm/p/6806928.html
Copyright © 2011-2022 走看看