一些简单的递归以及使用递归解决汉诺塔问题

#include 
int func_sum(int n)
{
    if (n == 1)
    {
        return 1;
    }
    return func_sum(n - 1) + n;
}
int func_arr(int *arr, int n)
{
    if (n == 0)
    {
        return arr[0];
    }
    return func_arr(arr, n - 1) + arr[n];
}
int func_max(int *arr, int n)
{
    if (n == 0)
    {
        return arr[0];
    }
    if (func_max(arr, n - 1) > arr[n])
    {
        return func_max(arr, n - 1);
    }
    else
    {
        return arr[n];
    }
}
static void move(char ch1, char ch2)
{
    static int num = 0;
    printf("%c---->%c, step = %d\n", ch1, ch2, ++num);
}

int func_hanoi(int n, char a, char b, char c)
{
    if (n == 1)
    {
        move(a, c);
    }
    else
    {
        func_hanoi(n - 1, a, c, b);
        move(a, c);
        func_hanoi(n - 1, b, a, c);
    }
}

int main()
{
    std::cout << func_sum(100) << std::endl;
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 2};
    std::cout << func_arr(arr, sizeof(arr) / sizeof(int) - 1) << std::endl;
    std::cout << func_max(arr, sizeof(arr) / sizeof(int) - 1) << std::endl;
    func_hanoi(15, 'a', 'b', 'c');
    return 0;
}

你可能感兴趣的:(c语言编程,c++,c语言,linux)