pragma mark 遞歸練習(xí)02
pragma mark 概念
/**
* 階乘公式
n! = n * (n-1)! ;
*/
pragma mark 代碼
#include <stdio.h>
int factorial(int n);
int main()
{
// 用遞歸法求N的階乘
/*
! 階乘
4! == 4 * 3 * 2 * 1
4! == 4 * 3! 3! = 3 * 2 * 1
4! == 4 * 3 * 2! 2! = 2 * 1
4! == 4 * 3 * 2 * 1! 1! = 1
4! == 4 * 3 * 2 * 1
4! == 4 * 3!
3! == 3 * 2!
2! == 2 * 1!
1! == 1
n! = n * (n - 1)!;
*/
int a = 3;
int result = factorial(a);
printf("result = %i\n",result);
return 0;
}
int factorial(int n) // 3 2 1
{
// 結(jié)束條件
// int result = 1;
if (n == 1) {
// 1 返回到公式 2 * factorial(2-1) 里面
return 1;
}
else
{
// return 3 * factorial(3-1); == return 3 * 2; // 最后將結(jié)果返回到最開(kāi)始調(diào)用的地方
// return 2 * factorial(2-1); == return 2 * 1;
return n * factorial(n - 1);
}
}
pragma mark 遞歸練習(xí)03
pragma mark 概念
pragma mark 代碼
#include <stdio.h>
int age(int n);
int main()
{
/*
有5個(gè)人坐在一起,問(wèn)第5個(gè)人多少歲?
他說(shuō)比第四個(gè)人大兩歲硼啤。問(wèn) 第4個(gè)人歲數(shù),他說(shuō)比第三個(gè)人大兩歲,問(wèn)第3個(gè)人,又說(shuō)比第2個(gè)人大兩歲址愿。問(wèn)第2個(gè)人,就說(shuō)比第1個(gè)人凰棉。最后問(wèn)第1個(gè)人,他說(shuō)10歲集漾。請(qǐng)問(wèn)第5個(gè)人多大?
第一個(gè)人得歲數(shù) == 10
第二個(gè)人的歲數(shù) == 第一個(gè)人 + 2 // 12
第三個(gè)人的歲數(shù) == 第二個(gè)人 + 2 // 14
第四個(gè)人的歲數(shù) == 第三個(gè)人 + 2 // 16
第五個(gè)人的歲數(shù) == 第四個(gè)人 + 2 // 18
已知第一個(gè)人得年齡,和每個(gè)人之間的年齡差,求第n個(gè)人的年齡
age(1) = 10
age(2) = age (1) + 2
age(3) = age (2) + 2
age(4) = age (3) + 2
age(n) = age(n-1) +2
*/
int result = age(3);
printf("result = %i\n",result);
return 0;
}
int age(int n) // 3
{
if (n == 1) {
return 10; // 第一個(gè)人的年齡 ??
}
else
{
// return age(3 - 1) + 2; == 12 + 2;
// return age(2 - 1) + 2; == 10 + 2;
return age(n -1) + 2;
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者