输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。

举报
刘斯淇 发表于 2022/04/04 20:12:02 2022/04/04
【摘要】 汉诺塔递归调用1.储备知识:递归算法:是一种直接或者间接地调用自身的算法!递归过程一般通过函数或子过程来实现。2.递归算法的实质:是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题.递归算法解决问题的特点:  (1) 递归就是在过程或函数里调用自身。  (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。  (3) 递归算法解题通常显得很简洁,...

汉诺塔递归调用

1.储备知识:递归算法:是一种直接或者间接地调用自身的算法!递归过程一般通过函数或子过程来实现。

2.递归算法的实质:是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题.

递归算法解决问题的特点:

  (1) 递归就是在过程或函数里调用自身。

  (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

  (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。

  (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

递归的原理,其实就是一个栈(stack), 比如求5的阶乘,要知道5的阶乘,就要知道4的阶乘,4又要是到3的,以此类推,所以递归式就先把5的阶乘表示入栈, 在把4的入栈,直到最后一个,之后呢在从1开始出栈, 看起来很麻烦,确实很麻烦,他的好处就是写起代码来,十分的快,而且代码简洁,其他就没什么好处了,运行效率出奇的慢.
————————————————


#include <stdio.h>
   #define PI 3.14 
int main(void)
{ double  r ,area , girth;  
 printf("please input r:\n");
 scanf("%lf",&r);
     if (r>=0)                        
          { area =PI*r*r;
           girth =2*PI*r ;
            printf("the area is %.2f\n", area);    
printf("the girth is %.2f\n", girth);}
else  
printf("Input error!\n"); 
return 0;
 }
————————————————
版权声明:本文为CSDN博主「CC++Edge-淇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_64148096/article/details/123143008

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。