gpt4 book ai didi

c - 计算数字字符串后继的递归函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:06 24 4
gpt4 key购买 nike

我想编写一个递归函数来计算 Succ('2468') = '2469''2468' 是一个数字字符串。

练习给了我一些预定义函数,例如 last(ch),它返回字符串的最后一个字符,start(ch),返回 ch 没有最后一个字符,addEnd(ch, c),在ch的末尾添加c,让我返回一个字符串作为最终结果(即 suc("123")="124")

我试过这段代码,但它只适用于包含 2 个字符的字符串。如果我的字符串的长度大于 2,则它不起作用:

int successor (char*ch)
{
if (strlen (ch)==1)
return (int(*ch))+1);
else
return ((int(*ch))*10+successor(ch+1));}

最佳答案

似乎不需要乘法或使用幂。鉴于您提供了额外的预定义函数,我认为这里的目的是使用递归方式来表达带进位的长加法。我不懂 C,但这里有一个语法非常接近的 JavaScript 示例。我希望这会有所帮助。

function successor(s){
if (s.length == 1){
if (s == '9'){
return '10';

} else {
// Return the successor character,
// not sure how this looks in C.
return String.fromCharCode(
s.charCodeAt(0) + 1);
}
}

let rightmost = successor(last(s));

// No carry so just return
// the string with the last
// character incremented
if (rightmost != '10'){
return addEnd(start(s), rightmost);

// We have a carry so
// continue the recursion
} else {
return addEnd(successor(start(s)), '0');
}
}

function last(s){
return s.substr(-1);
}
function start(s){
return s.substr(0, s.length - 1);
}
function addEnd(s, c){
return s + c;
}

console.log(successor('2999'));

关于c - 计算数字字符串后继的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54622242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com