5.22递归实现数制转换
生活随笔
收集整理的這篇文章主要介紹了
5.22递归实现数制转换
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Q:將輸入的二進制轉(zhuǎn)換為十進制表達。
?
#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 '#'\n");biTode(0,&sum,&m);printf("the decimal digit is\n");printf("%d ",sum);return 0; }分析:算法中參數(shù)sum用來記錄累加和。參數(shù)m隨著遞歸的深入不斷加1,并且遞歸結(jié)束m的值也不會發(fā)生變化。因為參數(shù)sum和m都要在遞歸中保持值得不變,因此采用指針傳遞方式。參數(shù)n的值隨著遞歸的深入不斷加1,但是每一層的遞歸n的取值都不同。在將二進制轉(zhuǎn)換為十進制時,2的指數(shù)應(yīng)為(*m)-n-1.輸入的二進制數(shù)以字符形式存儲,當(dāng)輸入字符#時,表示二進制字符串輸入結(jié)束。在調(diào)用該算法時,參數(shù)的初值都為0。
?
轉(zhuǎn)載于:https://www.cnblogs.com/dd2hm/p/6806928.html
總結(jié)
以上是生活随笔為你收集整理的5.22递归实现数制转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: winrm service
- 下一篇: oracle 存过调试 stepinto