To ensure a fair selection you all get the same test. You ...bytes.usc.edu › files › cs103 ›...

Preview:

Citation preview

http://learninmind.weebly.com/teaching-philosophy.html

Toensureafairselectionyouallgetthesametest.Youmustallclimbthattree.

Recursion?

“Recursion occurswhenathingisdefinedintermsofitselforofitstype.” https://en.wikipedia.org/

http://blog.haskellformac.com/blog/fractals-recursion-in-pictures

ComputerScienceRecursionRecursion occurswhenafunctionbeingdefinedisappliedwithinitsowndefinition(callsitself).

PropertiesofRecursiveBehavior:1.Basecase—aterminatingscenariothatdoesnotuserecursiontoproduceananswer2.Asetofrulesthatreduceallothercasestowardthebasecase

https://en.wikipedia.org/

FactorialFunction?n!=1*2*3*…*(n-1)*n

FactorialFunction(Iterative)n!=1*2*3*…*(n-1)*n

FactorialFunctionRecursive?

FactorialFunctionRecursive?

http://netlab.cs.ucla.edu/~schoi/cs32/

FactorialFunctionRecursiveFactorialFunctionRecursive

AddBaseCase!

10

FactorialTrace-throughint fact(int n){if (n == 0)

return (1);

return(n * fact(n-1));}

int fact(int n){if (n == 0)

return (1);

return(n * fact(n-1));}

int fact(int n){if (n == 0)

return (1);

return(n * fact(n-1));}

int fact(int n){if (n == 0)

return (1);

return(n * fact(n-1));}

int main(){int result;result = fact(3);cout << result;

}

result

3==0

2

n 33

2==0

1

n 2

1==0

0

n 10==0

1

n 0

1 1

2 2

6 6

6

http://careynachenberg.weebly.com/careys-slides.html

FibonacciNumbers

http://penitenciasludicas.blogspot.com/

Pairsofrabbits

FibonacciSequence

0,1,1,2,3,5,8,13,21,34,55,…

F(0)=0F(1)=1F(n)=F(n-1)+F(n-2),n>=2

FibonacciRecursiveFunction

TwoRecursiveCalls

RecursiononArray

Returnsumofallitemsinanarray

http://netlab.cs.ucla.edu/~schoi/cs32/

ArraySum

Returnsumofallitemsinanarray

int sumArr(int arr[],int n){

if(n==0)return0;if(n==1)returnarr[0];int first= sumArr(arr,n/2);int secnd =sumArr(arr+n/2,n-n/2);returnfirst+secnd;

}

http://careynachenberg.weebly.com/careys-slides.html

18

int main(){

const int n=3;int nums[n]={10,20,42};

cout <<sumArr(nums ,n);}

Array-summerTrace-through

int sumArr(int arr[],int n){

if(n==0)return0;if(n==1)returnarr[0];int first= sumArr(arr,n/2);int secnd =sumArr(arr+n/2,n-n/2);returnfirst+secnd;

}

int sumArr(int arr[],int n){

if(n==0)return0;if(n==1)returnarr[0];int first= sumArr(arr,n/2);int secnd =sumArr(arr+n/2,n-n/2);returnfirst+secnd;

}

110

10

20 42 2

int sumArr(int arr[],int n){

if(n==0)return0;if(n==1)returnarr[0];int first= sumArr(arr,n/2);int secnd =sumArr(arr+n/2,n-n/2);returnfirst+secnd;

}120

20

142

42

62

72

10 20 42nums 10 20 42 3

http://careynachenberg.weebly.com/careys-slides.html

http://netlab.cs.ucla.edu/~schoi/cs32/

Recommended