gpt4 book ai didi

c - 用递归找到一个两位数

转载 作者:行者123 更新时间:2023-12-02 08:33:33 24 4
gpt4 key购买 nike

我正在尝试使用递归在 C 中编写一些代码。

用户输入两个相同长度的正数,程序给了他一个新的数字,组成如下:

新数统一位数=用户写的第二个正数中最小的数位。

新数字十位 = 用户输入的第一个正数中最大的数字。

其实很简单,举个例子:

56422371

会给我们:61


我试过这样的:

#include <stdio.h>

int calcPair(int a, int b){

int number = calcPair(a/10, b/10);
int digit1 = (number/10);
int digit2 = number%10;

if(digit1 < a%10){
digit1 = a%10;
}
if(digit2 > b%10){
digit2 = b%10;
}

return(number);
}

int main()
{
int a, b, number=0;
printf("Please enter two positive number of same length:\n");
scanf("%d", &a);
scanf("%d", &b);

calcPair(a, b);
printf("The two-digit number composed from %d, %d is: %d", a, b, number);
return 0;
}

但该程序根本不运行..并关闭。

也许有人可以纠正我?或者帮我找出错误

提前致谢。

最佳答案

你的递归永远不会结束。考虑 calcPair 中的以下行:

int number = calcPair(a/10, b/10);

这条语句会一直执行,除非你让它有条件,比如:

int number;
if((a != 0) || (b != 0))
number = calcPair(a/10, b/10);

最终,因为您将两个数字都除以 10,所以此条件将证明 FALSE

关于c - 用递归找到一个两位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250519/

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