Added a tail recursive compound interest function
This commit is contained in:
		
							parent
							
								
									f76c587338
								
							
						
					
					
						commit
						fa45434228
					
				
							
								
								
									
										49
									
								
								lisp/compound-interest-test.lisp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								lisp/compound-interest-test.lisp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					(load "unit-test.lisp")
 | 
				
			||||||
 | 
					(load "compound-interest.lisp")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(unit
 | 
				
			||||||
 | 
					  (list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun many-years-with-no-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 0 10) 100000)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun no-years-with-positive-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 10 0) 100000)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun one-year-with-positive-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 5 1) 105000)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun two-years-with-positive-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 5 2) 110250)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun three-years-with-positive-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 5 3) 115763)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun four-years-with-positive-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 5 4) 121551)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun one-year-with-negative-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 (- 5) 1) 95000)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun two-years-with-negative-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 (- 5) 2) 90250)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun three-years-with-negative-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 (- 5) 3) 85737)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    (defun four-years-with-negative-interest-rate ()
 | 
				
			||||||
 | 
					      (eq (compound-interest 100000 (- 5) 4) 81450)
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										19
									
								
								lisp/compound-interest.lisp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								lisp/compound-interest.lisp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					(defun decrement (n) (- n 1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(defun percent (n percent)
 | 
				
			||||||
 | 
					  (cond
 | 
				
			||||||
 | 
					    ((> percent 0) (/ (+ (* n percent) 50) 100))
 | 
				
			||||||
 | 
					    (t (/ (- (* n percent) 50) 100))
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(defun compound-interest (principal rate years)
 | 
				
			||||||
 | 
					  (cond
 | 
				
			||||||
 | 
					    ((= years 0) principal)
 | 
				
			||||||
 | 
					    (t (compound-interest (+ principal (percent principal rate))
 | 
				
			||||||
 | 
					                          rate
 | 
				
			||||||
 | 
					                          (decrement years)
 | 
				
			||||||
 | 
					       )
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user