2012-04-29 51 views
0

我嘗試從10個基地轉換任何數量的基地。我將兩個數字相乘後表示相同的基數,但函數應該是遞歸的。從10個基地遞歸函數的基地號碼轉換器 - C

double convert(int number,int base) 
{ 
    int digit = 1; 
    double sum=0; 
    int i=0; 
    int figure; 
    double end; 
    if(base==10) 
     return number; 

    else 
    { 
     figure = (digit % (digit * 10) - number % digit)/digit; 
     end=pow(base,i); 
     sum+=figure*end; 
     ++i; 
     digit *= 10; 

     convert(figure,base); 

    } 
return sum; 
} 

但是我在其他方面感到困惑,它不起作用。我該如何解決它?任何優惠? 謝謝..

+1

請不要只是說 「這是行不通的。」發佈準確的輸入,輸出和預期輸出,並描述迄今爲止所做的調試。 –

+0

首先,我嘗試轉換爲任何基地從10基地與遞歸功能.. – nevra

回答

3

E.g.

#include <stdio.h> 

int convert(int number,int base){ 
    if(number == 0 || base==10) 
     return number; 

    return (number % base) + 10*convert(number/base, base); 
} 

int main() { 
    int i; 
    for(i=2;i<=10;++i) 
     printf("%d is %d base(%d)\n", 100, convert(100, i), i); 
    return 0; 
} 
+0

是的,謝謝,否則,例如我需要從6個基地轉換爲10個基地,我會盡力幫助你。 :) – nevra

+0

@physee,Processing類似。 – BLUEPIXY

0
static string ToBase(int n, int @base) 
    { 
     Func<int, string, string> x = null; 
     return (x = (i, j) => 
     { 
      if (i == 0) 
      { 
       return j; 
      } 
      return x(i/@base, i % @base + j); 
     })(n, string.Empty); 
    } 
+1

錯誤的編程語言。這是C,而不是C#(或者其他)。 – refi64