【问题标题】:在递归函数中找到最小数字
【发布时间】:2022-01-23 16:55:14
【问题描述】:

好的,所以我正在准备我的 C 考试,但在递归方面我有点卡住了一个递归函数,我需要找到最小元素,例如:52873 为 2,程序需要打印 2。

#include <stdio.h>

    int min_digit_rec(int num)
{
    int min=num;
    if (num == 0)
        return min;
    if (min>num%10)
        min = num % 10;
    
    min=min_digit_rec(num/10);

void main()
{
   int num, min_dig2;
    printf("Enter an integer number\n");
    scanf("%d", &num);
    min_dig2 = min_digit_rec(num);
    printf("output: the smallest digit from min_digit_rec: %d\n", min_dig2);
       
}

这是练习答案的代码,但效果不佳,我不明白为什么..有人可以向我解释我错过了什么吗?, 非常感谢您。

【问题讨论】:

  • 这里是您的问题的Answer

标签: recursion minimum


【解决方案1】:

我可以用 C++ 解决您的问题。

#include <iostream>
#include <vector>
#include <algorithm>
void showContentVector(std::vector<int>& input)
{
    for(int i=0; i<input.size(); ++i)
    {
        std::cout<<input[i]<<", ";
    }
    return;
}
void minimumDigit(int number, int& minimum, std::vector<int>& input)
{
    if(number==0)
    {
        minimum=input[0];
        for(int i=1; i<input.size(); ++i)
        {
            minimum=std::min(minimum, input[i]);
        }
        return;
    }
    input.push_back(number%10);
    minimumDigit(number/10, minimum, input);
    return;
}
int main()
{
    std::vector<int> inputVector;
    int minimumNumber;
    minimumDigit(52873, minimumNumber, inputVector);
    std::cout<<"minimumNumber <- "<<minimumNumber<<std::endl;
    return 0;
}

结果如下:

minimumNumber <- 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2016-01-20
    • 2021-12-23
    相关资源
    最近更新 更多