zoukankan      html  css  js  c++  java
  • 等差数列问题——递归与函数自调用算法

    题目描述 Description

    给定n(n>=1),用递归的方法计算1+2+3+4+...+(n-1)+n 

    输入输出格式 Input/output
    输入格式:
    一行,一个数n
    输出格式:
    一行,结果
    输入输出样例 Sample input/output
    样例测试点#1
    输入样例:
    3
    输出样例:
    6
    思路:
    运行程序,当T=5时,输出结果:S=15,其递归调用执行过程是:(设T=3) 
    递归调用过程,实质上是不断调用过程或函数的过程,由于递归调用一次,所有子程序的变量(局部变量、变参等)、地址在计算机内部都有用特殊的管理方法——栈(先进后出)来管理,一旦递归调用结束,计算机便开始根据栈中存储的地址返回各子程序变量的值,并进行相应操作。 
     
    代码①如下(符合题意,用的是递归):
     1 #include <stdio.h>
     2 int fac(int n)
     3 {
     4     if(n==0) return 0;
     5     else 
     6     {
     7         return(fac(n-1)+n);//递归 
     8     }
     9 }
    10 int main()
    11 {
    12     int n;
    13     scanf("%d",&n);
    14     printf("%d
    ",fac(n));//调用函数 
    15     return 0;
    16 }

    代码②如下(自己写的,没用递归,直接利用等差数列公式):

    1 #include <stdio.h>
    2 int main()
    3 {
    4     int n;
    5     scanf("%d",&n);
    6     printf("%d
    ",((1+n)*n)/2);
    7     return 0;
    8 }
  • 相关阅读:
    nginx的那些事儿
    mysql优化初探
    mysql使用心得
    mysql 利用触发器来实现check约束
    mybtatis添加数据返回主键
    maven导入本地jar包
    mariadb做读写分离
    linux网络(一)
    kali进行arp嗅骗和攻击的一次记录
    Vue项目中:axios请求拦截器添加token验证
  • 原文地址:https://www.cnblogs.com/geek-007/p/4470098.html
Copyright © 2011-2022 走看看