• SDNU 1072.我们爱递归(水题)


    Description

    我们想明白递归函数到底是怎么运作的,所以想用递归来计算当给定一个正整数n(n < 16)时,求出n + (n-1)……+1的值,同时进行一些输出
    要求写一个int plus1(int a)形式的函数,在进入递归函数时,输出相关信息。在调用结束返回值前,输出相关信息。最后输出n + (n-1)……+1的值

    Input

    3

    Output

    [plus1(3) output]Begin invoke plus1(3)
    [plus1(3) output]I want to calculate plus1(3), require 3 and the value of plus1(2),so I need to invoke plus1(2)
    [plus1(2) output]Begin invoke plus1(2)
    [plus1(2) output]I want to calculate plus1(2), require 2 and the value of plus1(1),so I need to invoke plus1(1)
    [plus1(1) output]Begin invoke plus1(1)
    [plus1(1) output]return plus1(1) = 1
    [plus1(2) output]I got the value of plus1(1), and plus it to 2then return3
    [plus1(3) output]I got the value of plus1(2), and plus it to 3then return6
    6

    Sample Input

    3

    Sample Output

    [plus1(3) output]Begin invoke plus1(3)
    [plus1(3) output]I want to calculate plus1(3), require 3 and the value of plus1(2),so I need to invoke plus1(2)
    [plus1(2) output]Begin invoke plus1(2)
    [plus1(2) output]I want to calculate plus1(2), require 2 and the value of plus1(1),so I need to invoke plus1(1)
    [plus1(1) output]Begin invoke plus1(1)
    [plus1(1) output]return plus1(1) = 1
    [plus1(2) output]I got the value of plus1(1), and plus it to 2then return3
    [plus1(3) output]I got the value of plus1(2), and plus it to 3then return6
    6

    Hint

    int plus1(int a)
    {
        // 从这里输出开始调用时的信息
        if(a == 1)
        {
            // 从这里输出最后一次调用的返回信息
            return ……;
        }
        else
        {
            // 从这里输出调用时的信息
            // 开始进行递归调用下一步
            ……
            int c = plus1(a - 1);
            // 从这里输出返回值前的信息
            ……
            return ……;
        }
    }
    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    using namespace std;
    #define ll long long
    
    int n, sum;
    
    int plu(int a)
    {
        printf("[plus1(%d) output]Begin invoke plus1(%d)
    ", a, a);
        if(a != 1)
        {
            printf("[plus1(%d) output]I want to calculate plus1(%d), require %d and the value of plus1(%d),so I need to invoke plus1(%d)
    ", a, a, a, a-1, a-1);
            sum = a+plu(a-1);
            printf("[plus1(%d) output]I got the value of plus1(%d), and plus it to %dthen return%d
    ", a, a-1, a, sum);
            return sum;
        }
        else
        {
            printf("[plus1(1) output]return plus1(1) = 1
    ");
            return 1;
        }
    }
    
    int main()
    {
        scanf("%d", &n);
        plu(n);
        printf("%d
    ", sum);
    }
  • 相关阅读:
    EL表达式具体解释
    Android 实战美女拼图游戏 你能坚持到第几关
    redis sentinel安装及配置(单机版)
    ElasticSearch scroll查询 api
    springboot自动配置原理
    kafka实践
    Springboot mybatis
    计算机原理
    快速排序算法
    maven常见报错问题
  • 原文地址:https://www.cnblogs.com/RootVount/p/10889921.html
Copyright © 2020-2023  润新知