当前位置:首页 » 《随便一记》 » 正文

【C语言蓝桥杯每日一题】—— 数列求值

21 人参与  2023年04月01日 08:57  分类 : 《随便一记》  评论

点击全文阅读


【C语言蓝桥杯每日一题】—— 数列求值?

前言?数列求值?解题思路分析:?非递归版解题代码:?递归版解题代码:? 总结撒花?
数列求值?)
追梦之旅,你我同行

   
?博客昵称:博客小梦
?最喜欢的座右铭:全神贯注的上吧!!!
?作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!
?博主小留言:哈喽!?各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!?
在这里插入图片描述

前言?

    哈喽各位友友们?,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!?我仅已此文,和大家分享【C语言蓝桥杯每日一题】—— 数列求值~ 都是精华内容,可不要错过哟!!!???

数列求值?

在这里插入图片描述

解题思路分析:?

这是一道斐波那切数列题目的变形题目。我们知道,斐波那契数列如果用递归来写,递归层次是很深的,效率很低。这道题也是如此。因此,我们用非递归的方法求出第20190324的最后四位数。求解的方法和斐波那切数列一样。这里只是多定义一个变量,一共四个变量。让d 保存第i项的结果,然后每次让a,b,c相当于向后移位(将b赋值给a,将c赋值给b,将d赋值给c)。
如果对上述讲解还是不够理解的,可以看一下我之前写的有关函数递归的博客:你是真的“C”——详解函数递归+求解青蛙跳台阶问题,然后对于这道题会有更好的理解。

非递归版解题代码:?

#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){  int a = 1;  int b = 1;  int c = 1;  int d = 0;  int i = 0;  for (i = 4; i <= 20190324;i++)  {    d = (a+b+c) % 10000;    a = b;    b = c;    c = d;  }  printf("%d",d);  return 0;}

程序输出结果验证: ?
在这里插入图片描述

递归版解题代码:?

这里只是提供这个方法给大家,但是由于运行时导致栈溢出,从而不能得到答案,但是如果栈空间足够的话,是可以得到正确答案的。

#include <stdio.h>#include <stdlib.h>int fib(int n){  if(n <= 3)  return 1;  else  return (fib(n - 1)+fib(n - 2)+fib(n - 3)) % 10000;}int main(int argc, char *argv[]){  int n = 20190324;  int num = fib(n);  printf("%d",num);  return 0;}

总结撒花?

   本篇文章旨在分享【C语言蓝桥杯每日一题】—— 数列求值。希望大家通过阅读此文有所收获!?如果我写的有什么不好之处,请在文章下方给出你宝贵的意见?。如果觉得我写的好的话请点个赞赞和关注哦~???


点击全文阅读


本文链接:http://zhangshiyu.com/post/57709.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1