• 1113 递归调用的次数统计


    题目来源:
    https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1113
    Description
    如下程序的功能是计算 Fibonacci数列的第n项。函数fib()是一个递归函数。请你改写该程序,计算第n项的同时,统计调用了多少次函数fib(包括main()对fib()的调用)。
    #include<stdio.h>
    int fib(int k);

    int main(void )
    {
        int n;
        scanf("%d", &n);
        printf("%d ", fib(n));  
        return 0;
    }

    int fib(int k)
    {
        if(k == 1 || k == 2)
            return 1;
        else
            return fib(k-1) + fib(k-2);
    }
    Input
    输入一个正整数n。
    Output
    输入包含两行,第一行是一个整数,表示第n项的值;第二行输入递归调用了多少次,具体格式见输出样例。

    Sample Input
    20
    Sample Output
    6765
    递归调用了13529次
    题意描述:
    输入要求fib数列第n项
    计算并输出该项的值,并指出调用了几次递归函数
    解题思路:
    加一个全局变量num,初始化,放在递归函数递归出口的前面计数,最后在主函数中输出即可
    程序代码:

     1 #include<stdio.h>
     2 int num; 
     3 int fib(int n);
     4 int main()
     5 {
     6     int n;
     7     while(scanf("%d",&n) != EOF)
     8     {
     9         num=0;
    10         printf("%d
    ",fib(n));
    11         printf("递归调用了%d次
    ",num);
    12     }
    13     return 0;
    14 }
    15 int fib(int n)
    16 {
    17     num++;
    18     if(n==1||n==2)
    19     return 1;
    20     else
    21     return fib(n-1)+fib(n-2);
    22 }


    易错分析:
    注意计数变量在主函数和递归函数中的位置

  • 相关阅读:
    Shell 查找和关闭进程
    如何重启MySQL,正确启动MySQL
    php 杂记
    Linux gcc编译简介、常用命令
    memset和printf(buf)编译出错
    Linux 文件操作函数
    Sizeof与Strlen的区别与联系
    获取Checkbox的值
    undefined reference to 'pthread_create'
    linux makefile文件
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/6777674.html
Copyright © 2020-2023  润新知