第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

十二進(jìn)制遞歸將整數(shù)轉(zhuǎn)換為字符串

十二進(jìn)制遞歸將整數(shù)轉(zhuǎn)換為字符串

不負(fù)相思意 2023-10-19 21:47:51
我不知道如何為字符串值分配一個(gè)數(shù)字并使其自動(dòng)識(shí)別以使數(shù)字成為字符串值。問(wèn)題如下:遞歸地編寫(xiě)該方法: 1) 考慮當(dāng)數(shù)字小于 12 時(shí)僅返回?cái)?shù)字本身的基本情況(除以 12 時(shí)商將為 0,余數(shù)為數(shù)字)。如果數(shù)字是 10 或 11,則返回“A”或“B”。2) 考慮數(shù)字大于或等于 12 的遞歸情況。在這種情況下,首先使用商遞歸調(diào)用該方法,并將結(jié)果(使用 + 運(yùn)算符連接字符串)與另一個(gè)遞歸調(diào)用的結(jié)果連接起來(lái),使用其余的。返回兩個(gè)遞歸調(diào)用的串聯(lián)結(jié)果。一個(gè)例子; 20A 是:2×12^2 + 0×12^1 + 10×12^0 = 2×144 + 0×12 + 10×1 = 288 + 0 + 10 = 298我知道現(xiàn)在的代碼是完全錯(cuò)誤的public class Duodecimal {  public static String toBase12(int n) {    //TODO: complete this method    if (n==10)    return "A";    if (n==11)    return "B";    if (n<12)    return n;    else {      if (n%12==10)      return (n/12 + "A");      if (n%12==11)      return (n/12 + "B");      else      return n/12;    }  }}
查看完整描述

3 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

你幾乎正確地完成了#1(return n無(wú)法編譯),所以讓我們看看#2:

考慮數(shù)字大于或等于 12 的遞歸情況。在這種情況下,首先使用商遞歸調(diào)用該方法,然后使用余數(shù)將結(jié)果(使用 + 運(yùn)算符連接字符串)與另一個(gè)遞歸調(diào)用的結(jié)果連接起來(lái)。返回兩個(gè)遞歸調(diào)用的串聯(lián)結(jié)果。

讓我們一步一步來(lái),處理大膽的部分。

首先使用商遞歸調(diào)用該方法

int quotient = n / 12;

首先使用商遞歸調(diào)用該方法

toBase12(quotient)

使用余數(shù)的另一個(gè)遞歸調(diào)用的結(jié)果

int remainder = n % 12

使用余數(shù)的另一個(gè)遞歸調(diào)用的結(jié)果

toBase12(remainder)

[...] 并將結(jié)果(使用 + 運(yùn)算符連接字符串)與 [...] 連接起來(lái)

toBase12(quotient) + toBase12(remainder)

返回兩個(gè)遞歸調(diào)用的串聯(lián)結(jié)果

我們也消除變量:

return toBase12(n / 12) + toBase12(n % 12)

正如您所看到的,作業(yè)包括您應(yīng)該做什么的分步說(shuō)明。您所要做的就是編寫(xiě)向您解釋的代碼。

最終結(jié)果是:

public static String toBase12(int n) {

    if (n < 10)

        return Integer.toString(n); // or  String.valueOf(n)  or  "" + n

    if (n == 10)

        return "A";

    if (n == 11)

        return "B";

    return toBase12(n / 12) + toBase12(n % 12);

}

測(cè)試

System.out.println(toBase12(298));

輸出

20A


查看完整回答
反對(duì) 回復(fù) 2023-10-19
?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊

在一張紙上,你可以這樣寫(xiě):

  1. 將輸入除以十二并保存余數(shù)。

  2. 將結(jié)果再次除以十二并保存余數(shù)。

  3. 繼續(xù)第二步,直到結(jié)果為零。從下到上連接每個(gè)步驟的余數(shù)。

使用您的示例輸入:

298 / 12 = 24 rem 10 (A)
 24 / 12 = 2  rem 0
  2 / 12 = 0  rem 2

因此

298 in base 10 = 20A in base 12


查看完整回答
反對(duì) 回復(fù) 2023-10-19
?
胡說(shuō)叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊

這是一種使用尾遞歸來(lái)實(shí)現(xiàn)的方法。第二種方法會(huì)累積,直到減到零,然后返回。


public class Base12 {

    public static String toBase12(int n) {

        return toBase12(n, "");

    }


    private static String toBase12(int n, String value) {

        return n <= 0 ? value : toBase12(n/12, toBase12Char(n%12) + value);

    }


    private static char toBase12Char(int n) {

        return n == 11 ? 'B' : (n == 10 ? 'A' : Integer.toString(n).charAt(0));

    }

}


public class Base12Test {

    @Test

    public void Test20A() {

        int n = 298;


        String expectedValue = "20A";

        String actualValue = Base12.toBase12(n);


        Assert.assertEquals(expectedValue, actualValue);

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-10-19
  • 3 回答
  • 0 關(guān)注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)