C语言循环与递归
2017-07-10 08:18
330 查看
#include <stdio.h>
void func();
int loop(int);
int monkey(int);
int main(){
printf("%d",monkey(10));
printf("%d",loop(6));
func();
return 0;
}
/*
题目:有6个人坐在一起,
问第6个人有多少岁,他说比第5个人大3岁;问第5个人有多少岁,他说比第4个人大3岁;
问第4个人有多少岁,他说比第3个人大3岁;问第3个人有多少岁,他说比第2个人大3岁;
问第2个人有多少岁,他说比第2个人大3岁;问最后1个人,他说是15岁.那么,第6个人多少岁?
*/
int loop(int n){
if(n>1){
return loop(n-1)+3;
}
return 15;
}
/*
题目:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。
第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。
到第10天在想吃的时候就剩一个桃子了,
问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。
*/
int monkey(int n){
if(n>1){
int m=(monkey(n-1)+1)*2;
printf("m=%d,n=%d\n",m,n);
return m;
}
return 1;
}
/*
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
*/
void func(){
int arr[]={1,2,3,4};
int i=0;
int j=0;
int k=0;
int num=4;
int ex=3;
int count=0;
for(i=0;i<num;i++){
for(j=0;j<num;j++){
for(k=0;k<num;k++){
if(arr[i]!=arr[j]&&arr[i]!=arr[k]&&arr[j]!=arr[k]){
printf("%d,%d,%d\n",arr[i],arr[j],arr[k]);
count++;
}
}
}
}
printf("count:%d",count);
}
/***********************************************************
1.递归函数每次调用都会重新创建变量,这些变量都存储在堆栈中,不断的增大内存空间的使用量
***********************************************************/
github:https://github.com/comeonjy/c
void func();
int loop(int);
int monkey(int);
int main(){
printf("%d",monkey(10));
printf("%d",loop(6));
func();
return 0;
}
/*
题目:有6个人坐在一起,
问第6个人有多少岁,他说比第5个人大3岁;问第5个人有多少岁,他说比第4个人大3岁;
问第4个人有多少岁,他说比第3个人大3岁;问第3个人有多少岁,他说比第2个人大3岁;
问第2个人有多少岁,他说比第2个人大3岁;问最后1个人,他说是15岁.那么,第6个人多少岁?
*/
int loop(int n){
if(n>1){
return loop(n-1)+3;
}
return 15;
}
/*
题目:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。
第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。
到第10天在想吃的时候就剩一个桃子了,
问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。
*/
int monkey(int n){
if(n>1){
int m=(monkey(n-1)+1)*2;
printf("m=%d,n=%d\n",m,n);
return m;
}
return 1;
}
/*
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
*/
void func(){
int arr[]={1,2,3,4};
int i=0;
int j=0;
int k=0;
int num=4;
int ex=3;
int count=0;
for(i=0;i<num;i++){
for(j=0;j<num;j++){
for(k=0;k<num;k++){
if(arr[i]!=arr[j]&&arr[i]!=arr[k]&&arr[j]!=arr[k]){
printf("%d,%d,%d\n",arr[i],arr[j],arr[k]);
count++;
}
}
}
}
printf("count:%d",count);
}
/***********************************************************
1.递归函数每次调用都会重新创建变量,这些变量都存储在堆栈中,不断的增大内存空间的使用量
***********************************************************/
github:https://github.com/comeonjy/c
相关文章推荐
- (C语言)循环与递归求斐波那契数
- 微软c语言循环递归笔试题分析
- C语言中的循环与递归
- 【C语言】求取第n个斐波那契数的时间复杂度、空间复杂度分析,用三种方式实现(普通递归,循环,优化递归)
- 【C语言】用递归和循环两种方法实现单链表倒置
- 八皇后问题 C语言,递归,非递归,循环!
- 二分查找法的C语言实现:递归与循环
- C语言使用普通循环方法和递归求斐波那契序列示例代码
- C语言:字符串逆置(循环法,递归写法)
- 微软c语言循环递归笔试题分析
- C语言用分别用递归和循环求数字的阶乘的方法
- C语言循环和递归两种方法求n的阶乘
- C语言递归算法系列_打印杨辉三角 循环与递归同时使用(4)
- 数据结构-递归与循环
- C语言6章循环结构
- C语言循环结构练习2
- c语言--部分循环摘录2
- 【c语言】 编写一个函数reverse_string(char * string)(递归实现)
- [算法]数据结构算法背包问题解法之递归解法,C语言实现