当前位置: 首页 > news >正文

推荐一个做淘客网站seo关键词排名优化哪好

推荐一个做淘客网站,seo关键词排名优化哪好,自做闪图网站,网站不能风格目录 1.分析下面选择题 2.实现求第n个斐波那契数 3.编写一个函数实现n的k次方,使用递归实现。 4.写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和 5.递归方式实现打印一个整数的每一位 6.实现求n的阶乘 1.分析下面选择…

目录

1.分析下面选择题

2.实现求第n个斐波那契数

3.编写一个函数实现n的k次方,使用递归实现。

4.写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

5.递归方式实现打印一个整数的每一位

6.实现求n的阶乘


1.分析下面选择题

根据下面递归函数:调用函数Fun(2),返回值是多少 (16)

int Fun(int n)      
{ if(n==5)   return 2;     else     return 2*Fun(n+1);      
}

解析:当n==5的时候退出递归 先递推,再回归 n=2的时候 一直递推 到2*fun(5) 的时候结束递推(一共三次递推),然后回归(也三次) ==> 4个2相乘 =16

2.实现求第n个斐波那契数

我们要先理解什么叫斐波那契数,简单解释一下吧

1 , 1 , 2 , 3 , 5.... 那就是前两个数相加等于第三个数,例如1+1=2 1+2=3 ....

  • 递归实现

假如用递归实现,要确定限制条件,那就是第一个数和第二数的时候都是返回1

Fib(1)=1,Fib(2)=1 因此我们设定条件n=1和n=2时返回1(限制条件)

而当n>=2是返回Fib (n-1)+Fib(n-2)实现递归(趋近于限制条件)

  • 递归函数的缺点: 其实递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有重复计算,而且递归层次越深,冗余计算就会越多。计算就会很慢

int Fib(int n) {if (n<=2) {return 1;}else{return Fib(n - 1) + Fib(n - 2);}
}
​
int main() {int n = 0;scanf("%d", &n);int ret = Fib(n);printf("%d", ret);
}
  • 迭代方式实现

  1. 在函数体内部,定义了三个整型变量 abc,分别用于保存斐波那契数列中的相邻三个数。

  2. 在循环体内,c = a + b; 表示将变量 c 赋值为 ab 的和,即斐波那契数列中的下一个数。

  3. 接着更新 ab 的值,将 a 更新为原来的 b,将 b 更新为原来的 c,以便下一次迭代计算。

int Fib(int n) {int a = 1;int b = 1;int c = 1;while (n>2){c = a + b; //a = b;b = c;n--;//减到<=2的时候退出循环}return c;
}
​
int main() {int n = 0;scanf("%d", &n);int r = Fib(n);printf("%d\n", r);return 0;
}

3.编写一个函数实现n的k次方,使用递归实现。

  • 思考一下,什么是限制条件?

  • 当指数k一直减减减到为0的时候,那么结果返回1,结束递归

  • power(n, k - 1): 这部分是递归调用,它会计算 nk - 1 次方。这就是递归的关键,它通过反复调用自身来逐步减小问题的规模。

  • n * power(n, k - 1): 这里将 nnk - 1 次方相乘,从而得到 nk 次方。因为 nk 次方可以表示为 n 乘以 nk - 1 次方。

#include <stdio.h>
​
// 递归函数计算n的k次方
double power(double n, int k) {// 递归基if (k == 0)return 1;// 若k为负数,则返回1除以n的-k次方if (k < 0)return 1 / power(n, -k);// 递归计算n的k次方return n * power(n, k - 1);
}
​
int main() {double n;int k;printf("请输入底数n和指数k:");scanf("%lf%d", &n, &k);double result = power(n, k);printf("%.2lf的%d次方为%.2lf\n", n, k, result);return 0;
}

4.写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19

输入:1729,输出:19

int DigitSum(int n)
{if (n < 10)return n;else{int sum = n % 10 + DigitSum(n / 10);return sum;}
}
int main()
{int n = 0;scanf("%d", &n);printf("%d", DigitSum(n));return 0;
}
​

5.递归方式实现打印一个整数的每一位

  • 分析:用递归的方法 我们将 1234 按顺序输出 1 2 3 4

    我们可以定义一个Print()函数

    先递推:(一直递推到最高位,然后再从最高位开始打印,就会按顺序输出)

    (1234) 除以十去掉最后一位 (123) 4

    (123) 4 ---> (12) 3 4 ----> (1)2 3 4 ---> 1 2 3 4

    每次都调用自己,直到不能再分(限制条件)

    后回归:

  • 最后当n=1的时候不满足n>9的条件,达到限制条件然后进行回归,

    1%10 = 1

    12%10=2

    123%10 =3

    然后再顺序输出1 2 3

int Print(int n) {if (n > 9)//当n是两位数以上{Print(n / 10);}printf("%d ", n % 10);
}
int main() {int n = 0;scanf("%d", &n);Print(n);
}
 

6.实现求n的阶乘

递归和非递归分别实现(不考虑溢出的问题)

  • 递归的方法

  • 当n=0的时候 阶层为1 ==>限制条件

  • 不等于0的时候就算阶层

//递归方式
int Fact(int n) {if (0 == n) {return 1;}else{return n * Fact(n - 1);}
}
int main() {int n = 0;scanf("%d", &n);int ret = Fact(n);printf("%d", ret);return 0;
}
  • 非递归方法

int Fact(int n) {int sum = 1;int i = 0;for (i = 1; i <= n; i++) {sum *= i;}return sum;}
int main() {int n = 0;scanf("%d", &n);int ret = Fact(n);printf("%d", ret);return 0;
}

http://www.rdtb.cn/news/12773.html

相关文章:

  • 东阳实惠营销型网站建设厂家北京百度seo工作室
  • 假视频网站源码出售免费行情软件网站大全
  • 自己做网站可以揽业务吗旅游营销推广方案
  • 网站跟网页的区别软文标题写作技巧
  • 做服装行业网站怎么每天更新内容ip域名查询
  • 贵州省建设网官方网站seo怎么做
  • 西安seo交流seo是什么职位缩写
  • 网络营销方式和消费者群体之间的关系太原百度seo排名软件
  • 博山政府网站建设托管广州 竞价托管
  • 做网站的网站软考十大最靠谱it培训机构
  • 南安市住房和城乡建设局网站企业网站营销
  • 建筑必看六个网站一站式网站设计
  • 网站制作服务平台网站seo服务商
  • 海口网站建设公司哪家好搜索引擎优化是做什么
  • 办个宽带一年大概多少钱搜索引擎优化英文简称为
  • 秦皇岛哪家公司网站建设好北京网站排名seo
  • 做网投网站好旺道seo工具
  • 苏州企业建设网站产品推广营销
  • 网站设计方案要怎么写长沙网络公司最新消息
  • 商务网站建设综合实训报告文章优化软件
  • 青海旭云网络做网站需要多少钱个人如何做网络推广
  • 自己做网站用花钱吗如何制作公司网页
  • wordpress58同城主题seo标题优化是什么意思
  • 法律垂直问答网站怎样做外链图片
  • 网站上的搜索怎么做友情链接怎么弄
  • 手机版怎么做微电影网站如何制作网站链接
  • h5自响应式网站模版国外b站浏览器
  • 织梦网站后台怎么登陆公司推广渠道
  • 网站建设被骗维护费百度推广seo怎么学
  • 设计网站怎样做色卡seo常用的优化工具