1.递归和非递归版本阶乘和斐波那契数列
阶乘
int re_factorial(int n)
{
if (n <= 1)
return 1;
else
return n * re_factorial(n - 1);
}
int factorial(int n)
{
int ret = 1;
while (n > 1)
{
ret *= n;
n--;
}
return ret;
}
int main()
{
int n;
cin >> n;
cout << re_factorial(n) << endl;
cout << factorial(n) << endl;
}
斐波那契数列
int re_fib(int n)
{
if (n <= 2)
return 1;
else
return re_fib(n - 1) + re_fib(n - 2);
}
int fib(int n)
{
int a = 0, b = 0, c = 1;
for (int i = 0; i < n-1; i++)
{
a = b;
b = c;
c = a + b;
}
return c;
}
int main()
{
int n;
cin >> n;
cout << re_fib(n) << endl;
cout << fib(n) << endl;
}
2.不创建临时变量来交换两个数
//不创建临时变量,实现两个数的交换
int main()
{
int a = 10;
int b = 20;
a = a ^ b;
//b = a ^ b ^ b = a;
//a = a ^ b = a ^ b ^ a = a ^ a ^ b = b;
//其中a ^ a = 0;
b = a ^ b;
a = a ^ b;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
3.逻辑与和逻辑或
4.const修饰指针
1. const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改 变。但是指针变量本身的内容可变。
2. const如果放在*的右边,修饰的是指针变量本身,保证了指针变量的内容不能修改,但是指 针指向的内容,可以通过指针改变。